gpt4 book ai didi

php - 如何构建需要特定 URL 查询参数的 Laravel 路由?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:25 26 4
gpt4 key购买 nike

假设我有这样的 URL:

  1. localhost/admin/users/ <--- 主管理用户页面
  2. localhost/admin/users/?data=refresh <---- 从该页面发出的典型 ajax 请求

还有一个像这样的简单 Controller :

class UsersController extends Controller {

public function index()

// call some services
// return a view
}

public function dataRefresh {

// call some services
// return some JSON
}
}

这是我正在处理的 routes.php:

    Route::get('admin/users', array('as' => 'admin.users', 'uses' => 'Admin\Users\UsersController@index'));
Route::get('admin/users????' , array('before' => 'ajax', 'as' => 'admin.users', 'uses' => 'Admin\Users\UsersController@dataRefresh'));

我可以在第二个路由中做什么来要求 URL 查询参数 ?data 并且进一步要求它设置为 data=refresh? 我如何确保它不与其他路由冲突?

注意:我知道有些人可能不认为这是“漂亮的 URL”。我确实在适当的时候实现了漂亮的 URLs/slugs,但是我也认为在很多情况下查询参数更清晰和更清晰(即让用户清楚地了解页面 URL 的哪一部分用于过滤数据datagrid...并向用户保证可以删除参数而不会导致页面中断或丢失)。 Google 自己以及许多其他知名网站都这样做。

注意:我已将 ajax 路由过滤器应用于第二条路由。我还将路由设置为指向 Controller 中的 dataRefresh 方法。

这是我所知道的。有什么想法吗?

最佳答案

Laravel 不使用 uri 的查询部分进行路由,对于 localhost/admin/users?data=refresh 你可以使用这样的东西:

Route::get('admin/users', function(){
$data = Input::get('data');
});

您可以使用 localhost/admin/users?data=refresh 向路由发出请求。您可以像这样声明您的路线:

Route::get('admin/users' , array('before' => 'ajax:data', 'as' => 'admin.users', 'uses' => 'Admin\Users\UsersController@dataRefresh'));

这里,refresh 被传递给路由过滤器,并在第三个参数($param)中可用,因此您可以在 中检索 refresh >$参数。如下所示创建过滤器:

Route::filter('ajax', function($route, $request, $param){

// This will give query string 'refresh'
// if you passed it as http://domain.com?data=refresh
$data = $request->get($param);

// You can retrieve the $param, third argument
// if you pass a parameter, i.e. 'refresh'
// param will contain 'refresh'
});

关于php - 如何构建需要特定 URL 查询参数的 Laravel 路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22391035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com