Laravel 5

Erreur GetPaginate()

  • Avatar de JulienQuillet
    Membre depuis :
    15/07/2017
    Messages :
    2

    Bonjour,
    Pour découvrir Laravel je tente de développer une petite apli web.
    Actuellement je bloque sur l'affichage d'une liste.
    Dites moi si j'ai bien compris :

    1. j'ai créé une table en base de données -> c'est OK je la visualise
    2. j'ai créé un model pour attaquer la base de données
    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class List extends Model
    {
    protected $primaryKey = 'idliste';
    }
    ?>
    1. j'ai créé un controller (qui fait appel à un repository cf 4): <?php
      namespace App\Http\Controllers;
      use App\Repositories\ListeRepository;
      use App\Http\Request\ListeCreateRequest;
      use App\Http\Request\ListeUpdateRequest;
      use Illuminate\Http\Request;
      class ListeController extends Controller
      {
      protected $ListeRepository;
      protected $nbrPerPage = 4;
      /
      Constructeur

      /
      public function __constuct(ListeRepository $ListeRepository)
      {
      $this->ListeRepository = $ListeRepository;
      }
      /*
      Display a listing of the resource.

      @return \Illuminate\Http\Response
      */
      public function index()
      {
      $listes = $this->ListeRepository->getPaginate($this->nbrPerPage);
      $links = $listes->setPath('')->render();
      return view('index', conpact('listes', 'links'));
      }
      ?>
    2. j'ai créé un repository <?php
      namespace App\Repositories;
      use App\Liste;
      class ListeRepository
      {
      protected $liste;
      public function __construct(Liste $liste)
      {
      $this->liste = $liste;
      }
      public function getPaginate($n)
      {
      return $this->liste->paginate($n);
      }
    3. j'ai créé une route qui appelle le controleur : <?php
      Route::get('/', function () {
      return view('welcome');
      });
      Auth::routes();
      // Route::get('/home', 'HomeController@index')->name('home');
      Route::get('/home', 'ListeController@index');
      Route::resource('user', 'UserController', ['only'=> ['edit','update']]);
      Route::resource('liste', 'ListeController');

      Au final j'ai une erreur :

    (1/1) FatalThrowableError
    Call to a member function getPaginate() on null

    Mes questions :
    Je pense que ce message d'erreur signale que mon objet $liste est vide (je ne vois passer aucune requête vers la BDD), mon analyse de l'erreur est-elle juste ?
    Je ne comprends à côté de quoi je suis passé .... Ma construction de code est-elle logique ?

    Merci d'avance de votre aide !

    :)

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1526

    Bonjour,

    Le modèle s'appelle List mais dans le repository on a :

    use App\Liste;

    Mais le souci ne vient pas de là, il semblerait d'après l'erreur que la propriété ListeRepository soit vide, elle est pourtant affectée dans le constructeur. Il faudrait déboguer à ce niveau pour voir ce qui se passe.

  • Avatar de JulienQuillet
    Membre depuis :
    15/07/2017
    Messages :
    2

    Tout d'abord merci d'avoir pris le temps de me répondre.
    On ne devrait jamais oublier de chercher les bugs les plus simples même quand (surtout) quand on travaille avec de nouveaux outils comme laravel. Mon erreur était une simple erreur de syntaxe sur le mot "contruct" .... dans le controller. Il manquait le r !

    raaaahh ! 2 jours que je cherche ...

    Bon allez bug suivant ;)

    Merci encore et certainement à bientôt sur ce blog :)

  • Avatar de F.M.
    Membre depuis :
    10/07/2017
    Messages :
    19

    Allons allons, on n'attaque pas une BDD, on lui fait la cour sous le balcon

Vous ne pouvez pas répondre à ce sujet.