Bonjour à tous,
Je dois réaliser un site internet avec le framework Laravel v5.0 (un fork de Symfony) et je suis complètement largué. Mon expérience pourtant plus que suffisante : j'ai réalisé des modules avec Prestashop, réalisé mes propres modèles MVC et codé des templates sous Wordpress. Et celui-ci me soûle tout simplement, sauf que je n'ai pas le choix car il s'agit d'un rendu universitaire.
Le projet consiste à réaliser une application pour les auto-écoles, je possède trois tables (utilisateur, consulter et trajet) et deux classes (utilisateur et trajet). Le principe d'Eloquent est de pouvoir utiliser une ORM (Object-Relational Mapping), c'est à dire qu'elle me permettra d'utiliser la POO pour interroger la BDD SQL. Pour ça, selon la documentation de Laravel, je dois créer un modèle.
1 2 3 4 5 6 7 8 | <?php namespace App; class Compte extends Model { protected $table = 'compte'; public $timestamps = false; } ?> |
Déjà ici, je ne comprends pas très bien. Ils me disent "To get started, create an Eloquent model. Models typically live in the app directory, but you are free to place them anywhere that can be auto-loaded according to your composer.json file. All Eloquent models extend Illuminate\Database\Eloquent\Model."
J'ai beau cherché une documentation sur composer.json, je n'ai rien trouvé de spécifique à Laravel et encore moins sur l'emplacement des modèles. Du coup, j'ai enregistré Compte.php dans le répertoire /app.
On continue la documentation. Sans transition on arrive à l'utilisation … où est-ce que je place mon code ? J'ai cherché un peu et du coup je comprends qu'il faut l'indiquer dans le controller ou dans routes.php directement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ //Route::get('/test', 'TestController@index'); //Route::get('/', 'BddController@index'); Route::get('/', function () { return Compte::all(); }); Route::controllers([ 'auth' => 'Auth\AuthController', 'password' => 'Auth\PasswordController', ]); |
Je lance l'application en ouvrant http://localhost/laravel/public/ dans le navigateur. Et j'ai un beau message d'erreur :
1 2 3 | Whoops, looks like something went wrong. 1/1 FatalErrorException in routes.php line 19: Class 'Compte' not found |
Du coup ma question c'est comment dire à Laravel que mon modèle se trouve dans /app ? Dans ma logique de PHP, je comprends que ce n'est pas magique d'écrire return Compte::all();
et qu'il faut forcément indiquer l'emplacement quelque part. Mais où ?
Pour mes classes PHP du coup je ne sais pas non plus où je peux les mettre. Dans le répertoire /tests ou un appel via le controller. Un peu de votre expérience me permettra au moins d'avancer.
Merci d'avance. Vous me sauverez la vie.