Модальное шоу laravel Информация о клиенте

Я получаю информацию о клиентах:

<table class = "mytable" id = "table">
<tr><th>Nom</th><th>Prenom</th><th>CIN</th><th>Email</th><th 
width = "20%">Action</th></tr>
{{ csrf_field() }}
@foreach($clients as $client)
<tr class = "client{{$client->cin}}">
<td>{{ $client->nom }}</td><td>{{ $client->prenom }}</td><td>{{ $client- 
>cin }}</td><td>{{ $client->email }}</td>
<td>
<span><a type = "button" class = "show-modal" href = "#"  data-nom = "{{$client- 
>nom}}" data-prenom = "{{$client->prenom}}"  data-tel = "{{$client->tel}}" 
data-cin = "{{$client->cin}}" data-email = "{{$client->email}}"><img 
src = "img/ac3.png"></a></span>
</td></tr>
@endforeach
</table>

Когда я нажимаю кнопку «Показать», я хочу отображать информацию о клиентах. На данный момент с этим кодом все в порядке:

$(document).on('click', '.show-modal', function() {
$('#show').modal('show');
$('#nom').text($(this).data('nom'));
$('#prenom').text($(this).data('prenom'));
$('#tel').text($(this).data('tel'));
$('#cin').text($(this).data('cin'));
$('#email').text($(this).data('email'));
});

Я показываю это в этом модальном окне:

<div class = "table-responsive"> 
<table class = "table table-striped table-bordered">
<tr>
<th >NOM</th>
<td id = "nom"></td>
</tr>
<tr>
<th >PRENOM</th>
<td id = "prenom"></td>
</tr>
<th >TELEPHONE</th>
<td id = "tel"></td>
</tr>
<th >CIN</th>
<td id = "cin"></td>
</tr>
<th >Email</th>
<td id = "email"></td>
</tr>
</table>
<h4 style = "color:#005b7f">Liste des voitures occupé par ce client</h4>
<table class = "mytable">

<tr><th>Date de prise</th><th>Date de fin</th><th>Matricule</th><th>details 
de contrat</th></tr>
@foreach ($client->locations as $location)
<tr><td>{{$location->date_prise}}</td><td>{{$location->date_fin}}</td><td> 
{{$location->voiture_matricule}}</td><td><a href = "#">Voir plus</a></td></tr>
@endforeach 
</table>  

проблема здесь: У меня есть связь между клиентом таблицы и местоположением таблицы. и расположение стола также имеет отношение к его местонахождению. это клиентский модальный режим:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class client extends Model
{
protected $primaryKey = 'cin';

public $incrementing = false;
public function locations()
{
return $this->hasMany(Location::class);
}
}

Когда я нажимаю кнопку «Показать», я бы хотел, несмотря на отображение информации о клиентах, также показать автомобили, занятые этим клиентом. Затем мне нужно передать cin моего клиента моему контроллеру или моему представлению. Есть идеи, как это сделать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Сначала добавьте следующую запись в свой раздел или в заголовок

<meta name = "csrf-token" content = "{{ csrf_token() }}" />

Вы можете вызвать функцию ajax при событии щелчка

$(document).on('click', '.show-modal', function() {
    //Along with your modal action you can use following code
     $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
        }
    });
    var id = $(this).data('nom');
    $.post('client/'+id, function(response){ 
        if (response.success)
        {
            var html = '<tr><th>Date de prise</th><th>Date de fin</th><th>Matricule</th>
                <th>details de contrat</th></tr>' ;
            $.each(response.car_data, function(i, car_data){
                html = html + "<td>" + car_data.date_prise +"</td>" + "<td>" + car_data.date_fin +"</td>"
                +"<td>" + car_data.voiture_matricule +"</td>";
            }).appendTo("#mytable");
        }
    },'json');
});

Здесь url должен совпадать с url объявления вашего маршрута для клиентов, например, если вы объявили такой маршрут:

Route::post('client/{id}', 'Controller@getclient');

Вы можете получить информацию о клиенте, используя следующую функцию:

public function getClientData($id){
    $car_data = array();
    //with client id you can write logic and send output in car_data variable  through json
    return response()->json(['success' => true, 'car_data' => $car_data]);
}

Вы можете удалить цикл foreach под тегом h4 в модальном html и использовать следующий код

<table class = "mytable" id = "mytable">
</table>

Надеюсь, это даст вам представление.

Спасибо за ваш ответ, это очень полезно. Я думаю, что сделанная вами логика верна. я сделал то же самое, но я все еще ничего не видел

вот мой аякс:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
    }
});

//show function 
 $(document).on('click', '.show-modal', function() {
//Along with your modal action you can use following code

var cin = $(this).data('cin');
$.post('client/'+cin, function(response){ 
    if (response.success)
    {
        var html = '<tr><th>Date de prise</th><th>Date de fin</th><th>Matricule</th><th>details de contrat</th></tr>' ;
        $.each(response.car_data, function(i, car_data){
            html = html + "<td>" + car_data.date_prise +"</td>" + "<td>" + car_data.date_fin +"</td>"
            +"<td>" + car_data.voiture_matricule +"</td>";
        }).appendTo("#mytable");
    }

},'json');

});

вот мой контроллер, я проверил вывод своего контроллера, и он работает, поэтому я думаю, что проблема в функции ajax:

public function getclientData($cin){
$car_dat = array();
//with client id you can write logic and send output in car_data variable  through json

$car_dat= Client::find(cin);
$car_data=array();
$car_data=$car_dat->locations;

return response()->json(['success' => true, 'car_data' => $car_data]);
}

мой маршрут:

Route::post('client/{cin}', 'ClientsController@getclientData');

Я думаю, что проблема может быть в функции ajax, потому что я не получил даже

var html = '<tr><th>Date de prise</th><th>Date de fin</th><th>Matricule</th> 
<th>details de contrat</th></tr>' ;

на мой взгляд.

Я также добавил мета-токен в заголовок. спасибо за любой ответ.

да @ShaanSetia проблема решена. спасибо за помощь

Ayoub 21.08.2018 03:45

Другие вопросы по теме