And*_*gan 22 php laravel laravel-4
是否可以访问过滤器中的路径参数?
例如,我想访问$ agencyId参数:
Route::group(array('prefix' => 'agency'), function()
{
# Agency Dashboard
Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex'));
});
Run Code Online (Sandbox Code Playgroud)
我想在我的过滤器中访问此$ agencyId参数:
Route::filter('agency-auth', function()
{
// Check if the user is logged in
if ( ! Sentry::check())
{
// Store the current uri in the session
Session::put('loginRedirect', Request::url());
// Redirect to the login page
return Redirect::route('signin');
}
// this clearly does not work..? how do i do this?
$agencyId = Input::get('agencyId');
$agency = Sentry::getGroupProvider()->findById($agencyId);
// Check if the user has access to the admin page
if ( ! Sentry::getUser()->inGroup($agency))
{
// Show the insufficient permissions page
return App::abort(403);
}
});
Run Code Online (Sandbox Code Playgroud)
仅供参考我在我的控制器中调用此过滤器:
class AgencyController extends AuthorizedController {
/**
* Initializer.
*
* @return void
*/
public function __construct()
{
// Apply the admin auth filter
$this->beforeFilter('agency-auth');
}
...
Run Code Online (Sandbox Code Playgroud)
net*_*n73 28
Input::get
只能检索GET
或POST
(等等)参数.
要获取路由参数,您必须Route
在过滤器中抓取对象,如下所示:
Route::filter('agency-auth', function($route) { ... });
Run Code Online (Sandbox Code Playgroud)
并获取参数(在您的过滤器中):
$route->getParameter('agencyId');
Run Code Online (Sandbox Code Playgroud)
(只为了好玩)在你的路线
Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex'));
Run Code Online (Sandbox Code Playgroud)
您可以在参数数组中使用,'before' => 'YOUR_FILTER'
而不是在构造函数中详细说明它.
alb*_*bur 14
Laravel 4.1中的方法名称已更改为parameter
.例如,在RESTful控制器中:
$this->beforeFilter(function($route, $request) {
$userId = $route->parameter('users');
});
Run Code Online (Sandbox Code Playgroud)
另一种选择是通过Route
外观检索参数,当您在路线之外时这很方便:
$id = Route::input('id');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10416 次 |
最近记录: |