laravel modal show客户信息

时间:2018-08-09 14:29:07

标签: ajax 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传递给控制器​​或视图。关于如何执行此操作的任何想法?

2 个答案:

答案 0 :(得分:0)

首先,在您的部分的标题中添加以下条目

<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]);
}

您可以在模式html中的h4标签下方删除foreach循环,并使用以下代码

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

希望这会给您带来想法。

答案 1 :(得分:0)

非常感谢您的回复。 我认为您提出的逻辑是正确的。我做了同样的事,但我仍然看不到任何东西

这是我的ajax:

from flask_login import login_required

@app.route('/account')
@login_required
def account():
    return render_template('account.html')

这是我的Controller,我测试了Controller的输出,它正在工作,所以我认为问题出在ajax函数中:

$.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');

});

我的路线:

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]);
}

我认为问题可能出在ajax函数中,因为我什至没有得到

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

在我看来。

我还在标头中添加了元令牌。 谢谢您的an顾。