suitetea/quick-routes

QuickRoutes 简化并缩短了路由和控制器方法的常规和重复声明。

0.8.5 2014-11-17 20:43 UTC

This package is auto-updated.

Last update: 2024-09-20 05:56:12 UTC


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', '*');

你可以指定要使用的路由,或者简单地使用所有 ("*")

通过在数组中设置默认路由,通过配置文件或设置来魔术般地发生。

设置默认路由有多种方式。

  1. 在 "app/config/suitetea/quick-routes" 中找到的包配置(发布包配置后可用)。
  2. 通过调用 QuickRoutes::setDefault() 并传入一个格式正确的数组。
  3. 根据注册调用覆盖默认值。在 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