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 :

Envoi donnée en GET et récupération dans la vue


Sujet :

Laravel PHP

  1. #1
    Membre habitué
    Envoi donnée en GET et récupération dans la vue
    Ben oui, le titre en dit long. Bref je débute avec des essais et erreurs mais j'avance petit à petit

    Explication:
    Je souhaite utiliser un paramètre GET de l'URL pour adapter ma vue.
    Pour ce faire, j'ai une méthode Update comme ceci:
    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
    public function update(Booking $booking)
        {
        	 	
            // Validation des données
    	$data = request()->validate([
    	'arrival' => ['required'],
    	'departure' => ['required'],
    	'total' => ['required']
    	]);
    	
    	$booking->update($data);
    	return redirect('/admin/bookings/'.$booking->house_id)
    	->with('ok', 'La réservation a bien été modifiée')
    	->with('booking_id',$booking->id);
        }

    et dans la redirection je lui ajoute le paramètre "booking_id" et sa valeur.

    Dans ma vue, je tente de récupérer celui-ci mais ma ligne de table ne prend pas la classe "alert alert-info":
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @foreach ($bookings as $booking)
    	<tr {{request('booking_id') == $booking->id ? 'class="alert alert-info" ' : ''}} >bla bla </tr>
    @endforeach


    Quelle est mon erreur ?

    Merci pour votre aide.

  2. #2
    Membre habitué
    Bon je lis que l'utilisation de with() implique des données en session alors que je pensais que cela pouvait être en GET.

    Admettons le code de mon controleur RESTful:
    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
     
    namespace App\Http\Controllers;
     
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;
    use App\Booking;
    use App\House;
    use App\Agency;
    use App\Customer;
    use App\Booking_status;
    use App\Event;
    class BookingsController extends Controller
    {
     
    public function update(Booking $booking)
        {
     
        	// Validation des données
    		$data = request()->validate([
    			'arrival' => ['required'],
    			'departure' => ['required'],
    			'total' => ['required']
    		]);
    		$booking->update($data);
    	      return redirect('/admin/bookings/'.$booking->house_id)
    	     ->with('ok', 'La réservation a bien été modifiée')
    	     ->with('booking_id',$booking->id);
     
        }

    Mon fichier web.php :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource ('/admin/bookings', 'BookingsController');


    Pourquoi ma vue ne tient pas compte de la récupération de la session "booking_id" alors que j'arrive à afficher la session "OK"

    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
    <!-- Alert Content -->
    		@if (session('ok'))
    			@alert(['type' => 'success' ])
    			{{ session('ok') }}
    			@endalert
    		@endif
    ...
    
     <tbody>
    @foreach ($bookings as $booking)
    	<tr {{session('booking_id') == $booking->id ? 'class="alert alert-info" ' : ''}} >
    	 <td><a href="/admin/bookings/{{$booking->id }}/edit"<i class="fa fa-user-o fa-lg" aria-hidden="true"></i></a></td>
    	</tr>
    @endforeach
     </tbody>


    Est-ce ma condition ternaire qui est fausse ?
    Comment puis-je contrôler que ma session est bien récupérée ?

    Je ne sais plus quoi en penser...

  3. #3
    Membre habitué
    J'ai trouvé !

    Une bête erreur dans la structure de ma condition ternaire corrigée comme ceci:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    <tr class="{{session('booking_id') == $booking->id ? 'alert alert-info' : ''}} ">