Jardin trois saisons

Ce projet de site web Laravel à été réalisé en équipe de 5 contenant 2 artistes et 3 programmeurs.
Le but du projet était de créer un site web fictif pour permettre aux habitants de Saint-Colomban de concevoir leur potager, déterminer quand leur plants devraient être prêts à être cueillit et permettre aux utilisateurs de proposer des échanges. Lorsque l’échange est adéquat entre les usagers, ils peuvent se contacter à partir des informations dans leurs profils et échanger leurs fruits et légumes.
Lors de ce travail d’équipe, j’ai travaillé à la conception de ces éléments backend :
- Conception des routes nécessaires pour chaque contrôleur.
- Conception des modèles nécessaires pour chaque éléments de la base de donnée.
- Conception des migrations.
- Mise en place de liens entre les différents modèles.
- Mise en place de la mise en page avec les artistes (Utilisation de blade).
Exemples de code conçus lors de ce projet
Routes utilisées dans le site web.
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('infos.accueilPrincipal');
});
Route::get('/installer', 'AppController@installer');
Route::group(['prefix'=>'informations'],function(){
Route::get('/', 'VoletInfoController@accueil');
Route::get('/accueil', 'VoletInfoController@accueilInfo');
Route::get('/bienfaits', 'VoletInfoController@bienfaits');
Route::get('/compost', 'VoletInfoController@compost');
Route::get('/fabrication', 'VoletInfoController@fabrication');
Route::get('/impacts', 'VoletInfoController@impacts');
Route::get('/jardins', 'VoletInfoController@jardins');
Route::get('/outils', 'VoletInfoController@outils');
Route::get('/plantation', 'VoletInfoController@plantation');
Route::get('/raisons', 'VoletInfoController@raisons');
});
Route::group(['prefix'=>'users', 'where'=>['user'=>'[0-9]+']],function(){
Route::get('/', 'UserController@index');
Route::get('/search', 'UserController@search');
Route::get('/{user}', 'UserController@show');
Route::get('/{user}/edit', 'UserController@edit');
Route::post('/{user}/edit', 'UserController@update');
Route::get('/create', 'UserController@create');
Route::post('/create', 'UserController@store');
Route::get('/{user}/potagers/create', 'UserController@create_potager');
Route::post('/{user}/potagers/create', 'UserController@store_potager');
Route::get('/{user}/echanges/create', 'UserController@create_echange');
Route::post('/{user}/echanges/create', 'UserController@store_echange');
Route::get('/{user}/favoris', 'UserController@favoris');
Route::get('/{user}/favoris/create', 'UserController@store_favoris');
Route::get('/{user}/favoris/delete', 'UserController@delete_favoris');
Route::get('/{user}/delete', "UserController@delete");
Route::post('/{user}/delete', "UserController@destroy");
Route::get('/accueil', "UserController@accueil");
Route::get('/logout', "UserController@logout");
Route::get('/register', "UserController@register");
Route::get('/login', "UserController@login");
});
Route::group(['prefix'=>'favorisPotager', 'where'=>['favori'=>'[0-9]+']],function(){
Route::get('/{favori}/delete', "FavorisPotagerController@delete");
Route::post('/{favori}/delete', "FavorisPotagerController@destroy");
});
Route::group(['prefix'=>'potagers', 'where'=>['potager'=>'[0-9]+']],function(){
Route::get('/', 'PotagerController@index');
Route::get('/{potager}', 'PotagerController@show');
Route::get('/{potager}/edit','PotagerController@edit');
Route::post('/{potager}/edit','PotagerController@update');
Route::get('/{potager}/gestion', 'PotagerController@gestion');
Route::get('/{potager}/espaces/create', 'PotagerController@create_espace');
Route::post('/{potager}/espaces/create', 'PotagerController@store_espace');
Route::get('/{potager}/delete','PotagerController@delete');
Route::post('/{potager}/delete','PotagerController@destroy');
Route::get('/{potager}/imagePotager/create', 'PotagerController@create_imagePotager');
Route::post('/{potager}/imagePotager/create', 'PotagerController@store_imagePotager');
});
Route::group(['prefix'=>'echanges', 'where'=>['echange'=>'[0-9]+']],function(){
// Create dans user
Route::get('/','EchangeController@index');
Route::get('/mesEchanges','EchangeController@user_index');
Route::get('/{echange}/edit','EchangeController@edit');
Route::post('/{echange}/edit','EchangeController@update');
Route::get('/{echange}/delete','EchangeController@delete');
Route::post('/{echange}/delete','EchangeController@destroy');
});
Route::group(['prefix'=>'propositions', 'where'=>['proposition'=>'[0-9]+']],function(){
Route::get('/mesTransactions','PropositionsEchangeController@user_index');
Route::get('{echange}/create/echange','PropositionsEchangeController@create_echange');
Route::post('{echange}/create/echange','PropositionsEchangeController@store_echange');
Route::get('{echange}/create','PropositionsEchangeController@create');
Route::post('{echange}/create','PropositionsEchangeController@store');
Route::get('/{proposition}/delete','PropositionsEchangeController@delete');
Route::post('/{proposition}/delete','PropositionsEchangeController@destoy');
Route::post('/{proposition}/update','PropositionsEchangeController@update');
});
// section de visionnement
Route::group(['prefix'=>'espaces', 'where'=>['espace'=>'[0-9]+']],function(){
Route::get('/create', 'EspaceController@create');
Route::post('/create', 'EspaceController@store');
Route::post('/{espace}/sections/create', 'EspaceController@store_section');
Route::get('/{espace}/edit', 'EspaceController@edit');
Route::post('/{espace}/edit','EspaceController@update');
Route::get('/{espace}/delete', 'EspaceController@delete');
Route::post('/{espace}/delete', 'EspaceController@destroy');
});
Route::group(['prefix'=>'sections', 'where'=>['section'=>'[0-9]+']],function(){
Route::get('/{section}/edit', 'SectionController@edit');
Route::post('/{section}/edit','SectionController@update');
Route::get('/{section}/delete', 'SectionController@delete');
Route::post('/{section}/delete', 'SectionController@destroy');
});
// plants de base pour la sectin de gestion
Route::group(['prefix'=>'plantsBase', 'where'=>['plantBase'=>'[0-9]+']],function(){
Route::get('/', 'PlantBaseController@index');
Route::get('/{plantBase}', 'PlantBaseController@show');
Route::get('/create', 'PlantBaseController@create');
Route::post('/create', 'PlantBaseController@store');
Route::get('/{plantBase}/edit','PlantBaseController@edit');
Route::post('/{plantBase}/edit','PlantBaseController@update');
Route::get('/{plantBase}/delete','PlantBaseController@delete');
Route::post('/{plantBase}/delete','PlantBaseController@destroy');
});
Route::group(['prefix'=>'imagePotager', 'where'=>['imagePotager'=>'[0-9]+']],function(){
Route::get('/{imagePotager}/edit','ImagePotagerController@edit');
Route::post('/{imagePotager}/edit','ImagePotagerController@update');
Route::get('/{imagePotager}/delete','ImagePotagerController@delete');
Route::post('/{imagePotager}/delete','ImagePotagerController@destroy');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Liens entre les différents éléments de la base de donnée.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Potager extends Model
{
protected $fillable = [
'user_id',
];
public function user(){
return $this->belongsTo('App\User');
}
public function espaces(){
return $this->hasMany('App\Espace');
}
public function images(){
return $this->hasMany('App\ImagePotager');
}
public function plants(){
return $this->hasMany('App\Plant');
}
}
Création d’un utilisateur.
@extends('interface.index')
@include('interface.header_elisa')
@section('contenu')
<form action="{{action('UserController@create', $user)}}" method="post">
@include('users.form', ['user'=>$user])
</form>
@endsection
// Form -> users.form
{{csrf_field()}}
<div class="donnee">
{{Form::label('nom', 'Nom')}}
{{Form::text('nom', $user->nom)}}
</div>
<div class="donnee">
{{Form::label('prenom', 'Prenom')}}
{{Form::text('prenom', $user->prenom)}}
</div>
<div class="donnee">
{{Form::label('email', 'Email')}}
{{Form::text('email', $user->email)}}
</div>
<div class="donnee">
<!-- {/{Form::label('password', 'Mot de passe')}} -->
{{Form::hidden('password', $user->password)}}
</div>
<div class="donnee">
{{Form::label('photo', 'Photo')}}
{{Form::text('photo', $user->photo)}}
</div>
<div class="donnee">
{{Form::label('bio', 'Bio')}}
{{Form::textarea('bio', $user->bio)}}
</div>
<div class="donnee">
{{Form::label('no_porte', 'Numéro de porte')}}
{{Form::text('no_porte', $user->no_porte)}}
</div>
<div class="donnee">
{{Form::label('rue', 'Rue')}}
{{Form::text('rue', $user->rue)}}
</div>
<div class="donnee">
{{Form::label('experience', 'Experience')}}
{{Form::number('experience', $user->experience, ['min'=>0, 'step'=>'0.1'])}}
</div>
<div class="donnee">
{{Form::label('est_actif', 'Actif pour la saison')}}
{{Form::radio('est_actif', 'true', true)}}
{{Form::label('est_actif', 'Non actif pour la saison')}}
{{Form::radio('est_actif', 'false')}}
</div>
<div class="submit">
<input type="submit" value="Ajouter">
</div>