suitetea / quick-routes
QuickRoutes 简化并缩短了路由和控制器方法的常规和重复声明。
0.8.5
2014-11-17 20:43 UTC
Requires
- php: >=5.3.0
- laravel/framework: >=4.0.0
README
你是否经常发现自己即使多个控制器都做同样的事情,也需要重复声明相同的路由类型?这就是 Quick Routes 介入的地方。
将这个
Route::get('users', 'UserController@index');
Route::post('users', array(
'as' => 'user.create',
'uses' => 'UserController@create'
));
Route::post('users/{id}', array(
'as' => 'user.edit',
'uses' => 'UserController@update'
))->where(array(
'id' => '[0-9]+'
));
Route::get('users/{id}/delete', array(
'as' => 'user.delete',
'uses' => 'UserController@delete'
))->where(array(
'id' => '[0-9]+'
));
Route::get('tweets', 'TweetController@index');
Route::post('tweets', array(
'as' => 'tweet.create',
'uses' => 'TweetController@create'
));
Route::post('tweets/{id}', array(
'as' => 'tweet.edit',
'uses' => 'TweetController@update'
))->where(array(
'id' => '[0-9]+'
));
Route::get('tweets/{id}/delete', array(
'as' => 'tweet.delete',
'uses' => 'TweetController@delete'
))->where(array(
'id' => '[0-9]+'
));
转换成这个
QuickRoutes::register('users', ['index', 'create', 'edit', 'delete']);
QuickRoutes::register('tweets', '*');
你可以指定要使用的路由,或者简单地使用所有 ("*")
通过在数组中设置默认路由,通过配置文件或设置来魔术般地发生。
设置默认路由有多种方式。
- 在 "app/config/suitetea/quick-routes" 中找到的包配置(发布包配置后可用)。
- 通过调用
QuickRoutes::setDefault()并传入一个格式正确的数组。 - 根据注册调用覆盖默认值。在
register中有一个可选的第三个参数,你可以传递路由来替代全局默认值。
此外,你可以通过使用不同的默认集来分组路由。例如
$set_1 = array(); // Declare your routes here
QuickRoutes::setDefault($set_1); // Register calls after this will use $set_1
QuickRoutes::register('users', ['route_1', 'route_3']);
QuickRoutes::register('someroute', '*');
$set_2 = array(); // Another set of routes
QuickRoutes::setDefault($set_2); // Register calls after this will use $set_2
QuickRoutes::register('anotherroute', ['foo', 'bar']);
0.8.0 新增
修复了一个错误,如果在 HTTP 方法未指定时,使用了先前声明的该方法,导致出现意外和不需要的结果。
register 方法中的第二个参数现在是可选的。如果没有设置,默认情况下将使用所有路由。例外情况是当覆盖单个实例的默认路由集时。在这种情况下,仍然可以使用星号 ('*')。
QuickRoutes::register('users'); // assumes all
QuickRoutes::register('settings', '*', $settings_routes);
引入了 with 方法。使用 with 将默认路由与为单个实例提供的路由集合并在一起。
例如,这个
$default_routes = [
'index' => [
'pattern' => '/',
],
'create' => [
'pattern' => 'create',
'methods' => ['get','post']
]
];
$image_routes = [
'img_create' => [
'pattern' => 'create/image'
'methods' => ['post']
]
];
QuickRoutes::register('users', '*', array_merge($default_routes, $image_routes));
等同于这个
QuickRoutes::with($image_routes)->register('users');
此外,你可以定义一个自定义的 uses 值,包括一个闭包
$image_routes = [ 'img_create' => [ 'pattern' => 'create/image', 'methods' => ['post'], 'uses' => function() { return Redirect::route('image.view'); } ] ];
0.7.0 新增
现在可以为每个路由创建多个方法,只需将方法参数作为一个数组传递。
安装
通过 Composer
{
"require": {
"suitetea/quick-routes": "dev-develop"
}
}
默认路由数组应采用以下格式
$default_routes = [
'index' => [
'pattern' => '/',
],
'create' => [
'pattern' => 'create',
'methods' => ['get','post']
],
'edit' => [
'pattern' => '{id}/edit',
'where' => ['id' => '[0-9]+'],
'methods' => ['get','post']
],
'view' => [
'pattern' => '{id}',
'where' => ['id' => '0-9]+']
]
];
可选地,你可以发布包配置文件并在其中设置默认路由。
php artisan config:publish suitetea/quick-routes