pro*_*mer 5 php query-parameters laravel laravel-4 laravel-routing
假设我有这样的网址:
还有一个像这样的简单控制器:
class UsersController extends Controller {
public function index()
// call some services
// return a view
}
public function dataRefresh {
// call some services
// return some JSON
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的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'));
Run Code Online (Sandbox Code Playgroud)
我在第二个路径中可以做什么来要求URL查询参数 ?data ,并且还需要将其设置为 data=refresh?我如何确保它不与其他路线冲突?
注意:我知道某些人可能不会将此视为"漂亮网址".我在适当的时候实现了漂亮的URL/slugs,但是我也认为在很多情况下查询参数更清晰更清晰(即让用户清楚地了解页面URL的哪一部分用于过滤数据) datagrid ...并确保用户可以删除参数而不会导致页面中断或丢失).谷歌自己以及许多其他声誉良好的网站都是这样做的.
注意:我已将ajax路由过滤器应用于第二个路由.我还设置了路由指向我的控制器中的dataRefresh方法.
这是我所拥有的.有任何想法吗?
Laravel 不使用 a 的查询部分uri进行路由,因为localhost/admin/users?data=refresh您可以使用如下所示的内容:
Route::get('admin/users', function(){
$data = Input::get('data');
});
Run Code Online (Sandbox Code Playgroud)
您可以使用 向路线发出请求localhost/admin/users?data=refresh。你可以route这样声明你的:
Route::get('admin/users' , array('before' => 'ajax:data', 'as' => 'admin.users', 'uses' => 'Admin\Users\UsersController@dataRefresh'));
Run Code Online (Sandbox Code Playgroud)
在这里,被传递给路由过滤器并在第三个参数( )refresh中可用,因此您可以在 中检索。创建过滤器,如下所示:$paramrefresh$param
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'
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4041 次 |
| 最近记录: |