我有一个名为index.blade.php的视图,它显示了有关供应商的信息,该供应商通过控制器传递,例如VendorController,在这个视图中我有一个按钮“查看地址”,现在我想在按钮点击时显示该供应商的数据。我还有另一个控制器,即VendorAddressController,它从db中获取供应商的地址。 index.blade.php文件的代码:
<td>
<a href="{!! $vendor->slug !!}/vendor-address/" class="btn btn-primary">View Address</a>
</td>
VendorAddressContoller中的
public function index($id)
{
$vendor = Vendors::find($id);
$vendorsaddress = VendorAddress::where('vendor_id', $vendor->id)->paginate(15);
return view('admin.vendoraddress.index',['vendorsaddress'=>$vendorsaddress, 'vendor'=>$vendor, 'address'=>$address]);
}
但是当我点击按钮时,什么都没有出现
答案 0 :(得分:4)
有多种方法可以做到这一点。您可以根据自己的要求选择多种选择。
1。 By Session
您可以在第一个控制器中执行此操作
Session::put('key', 'value');
然后在第二个
Session::get('key');
2。 By Cookies 你的第一个控制器:
$response = Response::make('Hello World');
return $response->withCookie(Cookie::make('name', 'value', $minutes));
并在下一个请求中获取
$value = Cookie::get('name');
您可以从here找到更多信息。
答案 1 :(得分:0)
你应该记住两件事:
因此,回到您的问题,您希望在按钮单击(动态)时显示该供应商的数据。然后你应该使用jquery,我正在添加相同的小代码片段:
在route.php(适用于Laravel 5.2及更早版本)或web.php(适用于Laravel 5.3)中创建新路径
Route::get('vendor-address/{id}', 'VendorController@getAddress');
创建一个js文件,让我们将其命名为custom.js并将其放在您的公共或资源文件夹中,暂时将其保存在公共场所。内容相同:
$('#show-address').click(function()
{
//get the id of the vendor we want to fetch address of
var vendor_id = $(this).data('id');
//send a get request to our controller to get the data
$.get('/vendor-address/'+vendor_id, function(data)
{
//store the json data we got from the controller into a variable
var parsed = JSON.parse(data);
//remove all the content of this vendors address div so that the address doesn't repeats
$('.vendor_address_'+vendor_id).empty();
//append the address in this div
$('.vendor_address_'+vendor_id).append(parsed);
});
})
现在你认为应该有:
<button class="btn btn-success" data-id="{{$vendor->id}}">Show address</button>
//and a empty div, our address will be appended here
<div class="vendor_address_{{$vendor->id}}"></div>
现在在您的控制器中:
public function getAddress($id)
{
$address = Vendor::where('id', $id)->first();
return json_encode($address->address);
}
请根据您的要求修改几个字段