我的Laravel应用程序在dataTables中使用了大量超链接。我想创建一个jQuery或PHP函数,它接受路由名称,ID和显示名称(用于锚标记)。现在我到处都在使用以下代码。
id = data.location.session_location_id;
display = data.location.name;
url = "{{route('session-location.show', '_id_')}}";
view_url = url.replace('_id_', id);
link = "<a href='"+ view_url +"'> "+ display + "</a>";
我想创建一个返回此链接的函数。但问题是刀片不接受jQuery变量,即在route()函数中。与PHP相同的问题。如果我尝试写这样的
function show($route, $id, $display)
{
$url = route($route, $id);
$link = '<a href="' . $url . '">' . $display . '</a>';
return $link;
}
它也不起作用..有什么建议吗?
答案 0 :(得分:0)
您可以在Laravel中创建辅助函数。
请参阅以下链接或谷歌,你会发现大量的例子。
https://medium.com/teknomuslim/how-to-create-helper-functions-in-laravel-d769d12218d4
使用此功能,您可以创建一个接受$route
,$id
,$display
并返回$link
的功能。
在你的刀片文件中,只需传递
之类的参数{{ getLink($route, $id, $display) }}
你会得到这个链接。
希望这有帮助。
感谢。
编辑:在路线文件中创建路线
Route::post('/getLink', 'UserController@getLink');
在用户控制器中(您可以使用任何没有访问限制的控制器,以便您可以向任何用户发出请求)创建一个函数:
public function getLink(Request $request) {
$route = $request->input('route');
$id = $request->input('id');
$display = $request->input('display');
$url = route($route, $id);
$link = '<a href="' . $url . '">' . $display . '</a>';
echo json_encode(array("success"=>true,"link"=>$link));
}
在使用jQuery的任何刀片文件中,向上面的URL发出一个AJAX请求。
$(document).ready(function() {
id = data.location.session_location_id;
display = data.location.name;
url = "{{route('session-location.show', '_id_')}}";
$.ajax({
url: "/getLink",
type: "POST",
data: {id : id,display: display, url: url},
success: function(data) {
var d = $.parseJSON(data);
if(d.success) {
alert(d.link);
}
}
});
});
这只是一个概述,请检查语法错误并根据需要修改代码。
感谢。