如何将JSON返回数据作为参数传递给URL路由(laravel)

时间:2018-08-20 08:15:47

标签: jquery arrays json laravel twitter-typeahead

我正在从事 Laravel 项目,并成功实现了搜索功能,可以使用 twitter type 和jquery从数据库中搜索用户,但是卡住。我想将返回的JSON作为参数传递给路由URL,以便在单击任何给定建议后将结果重定向到用户的个人资料页面。下面是我的代码。

suggestion: function(data) {
                    return '<a href="{{route('profile', ['username'=> 
'+ data.username +'])}}" class="list-group-item"> ' + data.username + 
'</a>'
}
带有此代码的

点击即可获得此结果     http://battlefield.test/profile/+%20data.username%20+ 相反,我想要     http://battlefield.test/profile/simon 要么     http://battlefield.test/profile/champion

下面是我要重定向到的路由

// Profile
Route::get('profile/{username}', [
'uses'=>'UserController@profile',
'as'=>'profile',
'middleware' => ['auth'],
]);

以下是与我的研究相关的链接,以防有帮助 https://scotch.io/tutorials/implementing-smart-search-with-laravel-and-typeahead-js

任何帮助将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:0)

我终于想出了一个解决方案。通常,从Laravel的视图中访问带有参数的路由,假设您从上面的问题中获得了以下路由

// Profile
Route::get('profile/{username}', [
'uses'=>'UserController@profile',
'as'=>'profile',
'middleware' => ['auth'],
]);

以下是通过href访问它的两种方法:

选项1。

<a href="{{route('profile', ['username'=>here goes your parameter])}}"></a>

选项2。

<a href="/profile/{{here goes your parameter}}"></a>

由于在我的情况下,我使用JSON数据来获取刀片模板“ {{}}”中不易访问的参数,因此第一种选择对我而言并不奏效(如果有人知道为什么可以让我知道),但第二个做到了。这就是我将参数从JSON返回数据传递到URL的方式

'<a href="/posts/'+ data.username +'"></a>'

这是示例返回数据,在这种情况下,该数据将分配给数据

{id: 1, username: "syk", first_name: "symon", last_name: "kibaru"}

答案 1 :(得分:0)

我尝试了很多尝试来弄清楚如何将数组传递到路由中,然后在控制器中接受它,因此有解决方案:

在表单操作中:

<form action="/purchase/{{ json_encode($items) }}" method="get">

在路线上:

Route::get('/purchase/{items}', [
        'uses' => Controllers\PurchaseController::class,
        'as' => '/purchase',
    ]);

在控制器中:

public function  __invoke($items)
    {
        json_decode($items);
    }