如何为Dynamic Laravel Routes创建jQuery函数

时间:2018-03-12 06:20:31

标签: php jquery laravel

我的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;
}

它也不起作用..有什么建议吗?

1 个答案:

答案 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);
               }
           }
    });
 });

这只是一个概述,请检查语法错误并根据需要修改代码。

感谢。