IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

Methode create et store


Sujet :

Laravel PHP

  1. #1
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut Methode create et store
    Hello,

    Est-ce que l'un d'entre vous pouvez me dire comment je dois m'y prendre pour compléter ma fonction create et store de mon controlleur en y ajoutant le contenu d'une variable provenant d'une autre méthode de la même classe.

    Voici tout le code du contrôleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    <?php
    
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Booking;
    use App\House;
    use App\Agency;
    use App\Customer;
    use App\Booking_status;
    use App\Event;
    
    class BookingsController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {
           //
    		
    		
        }
    
        /**
         * Show the form for creating a new resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function create()
        {
        	$house_id = '';
        	$booking_status = Booking_status::all(); //affiche les status disponibles
        	$events = Event::where('lang','fr')->get();//affiche les évènements disponibles en FR
        	$agencies = Agency::all();//affiche les agences disponibles
        	$languages = array('FR','NL','DE','EN');//affiche les langues disponibles
            return view('/admin/bookings/create',compact('booking_status','events','agencies','languages','house_id'));
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
        public function store(Request $request)
        {
            // Validation des données
    		request()->validate([
    			'arrival' => ['required'],
    			'departure' => ['required'],
    			'customer' => ['required']
    		]);
    		
    		Customer::create([
    			'name'=>$customer,
    			'lang'=> request('lang'),
    			'email'=> request('email')
    		
    		]);
    		
    		$customer = request('customer');
    		
    		Booking::create([
    			'house_id' => '',
    			'arrival' => request('arrival'),
    			'departure' => request('departure'),
    			'status_id' => request('status'),
    			'event_id' => request('event'),
    			'agency_id' => request('agency'),
    			'customer' => $customer,
    			
    		]);	
    		
    		
    		return redirect('/admin')->with('ok', 'La réservation a bien été ajoutée');
        }
    
        /**
         * Display the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function show($house)
        {	
        	$houseTitle = House::where('id', $house)->first();
            $bookings = House::find($house)->bookings;
    		//dd($bookings);
    		return view('admin/bookings.show', compact('bookings','houseTitle'));
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function edit(Booking $booking)
        {
        	$booking_status = Booking_status::all(); //affiche les status disponibles
        	$events = Event::where('lang','fr')->get();
        	$agencies = Agency::all();
        	$languages = array('FR','NL','DE','EN');
        	
            return view('admin/bookings.edit', compact('booking','booking_status','events','agencies','languages'));
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function update(Booking $booking)
        {
        	
        	// Validation des données
    		$data = request()->validate([
    			
    			'arrival' => ['required'],
    			'departure' => ['required'],
    			'total' => ['required']
    		]);
    		$booking->update($data);
    		//return redirect()->route('bookings.index',['booking_id'=> $booking->id]);
    		return redirect('/admin/bookings/'.$booking->house_id)
    		->with('ok', 'La réservation a bien été modifiée')
    		->with('booking_id',$booking->id);
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function destroy($id)
        {
            //
        }
    }
    Dans la méthode create() et store(), j'ai laissé blanc ma variable $house_id.
    En réalité elle devrait correspondre à la valeur de $house de la méthode Show().

    Je ne vois pas comment faire pour la récupérer.

    Merci pour votre aide...

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,
    pourquoi ne pas modifier les routes, pour mettre le housse_id en paramètres, comme le show ?

  3. #3
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    En fait j'essaye de respecter l'architecture RESTful et toutes les routes sont donc formatées comme telles dans la doc Laravel (https://laravel.com/docs/6.x/control...ce-controllers)

    Mon fichier web.php n'a donc qu'une seule ligne pour toutes les routes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource ('/admin/bookings', 'BookingsController');
    Maintenant je suis bien conscient que mes connaissances sont celles d'un débutant en POO et je ne connais pas toutes les ficelles d'un framework.

    Si je n'ai d'autre choix, je ferais donc une route customisée pour mon cas de figure.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Oui, mais dans la même doc un peu plus bas, il y a le cas qui vous concerne : Partial Resource Routes
    Cela permet de ne générer qu'une partie de routes et de facto de finaliser vos routes spécifique.

  5. #5
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Oui tout à fait.
    Dans mon cas ce sera qquch du genre que je vais devoir ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Route::resource('/admin/bookings', 'BookingsController')->except([
        'create'
    ]);
    Route::get('/admin/ajout', 'MachinController@ajout')
    Tiens, est-ce que je peux tout de même nommer la méthode create au lieu d' "ajout" et l'encoder dans bookingsController au lieu de machinController ?

  6. #6
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    J'ai essayé çà marche pour moi

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    perso j'aurais fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::get('/admin/ajout/{id_house}', 'MachinController@ajout')

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2013, 18h16
  2. [ZF 1.10.8] zend_lucene methode create qui plante
    Par speedy_g dans le forum Autres composants
    Réponses: 1
    Dernier message: 13/12/2010, 13h12
  3. Methode create et delete
    Par rouxette dans le forum W4 Express
    Réponses: 5
    Dernier message: 29/07/2009, 14h38
  4. Service Broker - Create route dans store proc
    Par benji_dv dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/10/2007, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo