Bonjour,

Je m'initie à la création d'un plugin wordpress en utilisant le framework getherbert qui je pensais aller me simplifier la vie, je me retrouve avec Eloquent et une base laravel dont je ne connais a peine habitué à d'autres Framework. Mon problème étant comment récuperer et sauvegarder des données avec le Framework GetHerbet et Eloquent ?

Ce que je fais

Au niveau de mon controller AdminController@add j'ai donc fait un create

$post = Post::all();
        Post::create($post);
        return view('@Blog/admin/add.twig', [
                    'title' => 'Articles'
                    ]);

Ma route est en post

$router->post([
    'as'   => 'streamAdd',
    'uri'  => 'tgmprog-add',
    'uses' =>  __NAMESPACE__ . '\Controllers\AdminController@add'
]);

Ce que je veux

J'aimerais pouvoir save mes data

Ce que j'obtiens

Tout d"abord j'ai une erreur, ce qui est normal vu que la variable est null car je ne sais pas comment faire sous twig pour passer les arguments au controller ^^

Catchable fatal error: Argument 1 passed to Illuminate\Database\Eloquent\Model::create() must be of the type array,
Et du coup les data ne se save pas !

Du coup ma question serait mon controller, ma route est t'elle correcte ? Et ensuite sous Twig au niveau de l'action que mettre ?

2 réponses


Ramzz1994
Réponse acceptée

Pour l'erreur, c'est clair. La méthode create s'attend à ce que tu lui passes un tableau en paramètre. Élas, Post::all() retourne une Collection (qui contient des objets Post), donc ça ne marche pas dutoût de faire cela. Tu peux te documenter sur la documentation de Laravel (Eloquent) pour en savoir plus au sujet de l'utilisation des modèles.

Pour récupérer les valeurs soumis par un formulaire, un objet de type Http est passé en paramètre de l'action. Sur cet objet, tu as accès à une méthode get en autre. (http://getherbert.com/0.9/controllers et http://getherbert.com/0.9/inputs).

<?php 
namespace /* ... */;

use Herbert\Framework\Http;

class AdminController
{
    // ...

    public function add(Http $http)
    {
        // Au fond, tu pourrais peut-être juste faire quelque chose du genre pour créer ton post.
        // Tu pourrais vérifier que $http->all() retourne bien un array. :-)
        Post::create($http->all()); // Bon, évidemment, il n'y a pas de validation...

        // Après l'insertion, tu pourrais rediriger, mais je te laisse juger de ça.
    }
}

J'espère avoir répondu à la question ! Bonne journée ! :-)

Muxabble
Auteur

Merci beaucoup pour ta réponse je vais étudier le cas :)