Laravel 5高级路由

时间:2018-01-03 10:51:44

标签: php laravel laravel-5 routing routes

大家。我无法将网址链接到2个不同的控制器:(

Route::group([
    'namespace'  => 'Page',
    'as'         => 'page.',
], function() use ($lang)
{
    Route::get ('/{path}-{page_id}',                  ['uses' => 'PageCategoryController@show',       'as' => 'category']);
    Route::get ('/{path?}/{alias}-{record_id}.html',  ['uses' => 'PageItemController@show',           'as' => 'item']);
});

当你要去网址时

/test-3
/test-3.html

你有相同的结果,但为什么?

uri GET {path}-{page_id}
as  frontend::page.category

请帮帮我:)

更新:

也许是因为这个,但我不确定......

Route::pattern('path',      '[-_a-zA-Z0-9\p{L}]*');
Route::pattern('alias',     '[-_a-zA-Z0-9\p{L}]*');
Route::pattern('record_id', '[0-9]+');
Route::pattern('page_id',   '[0-9]+');

2 个答案:

答案 0 :(得分:1)

将第二个放在第一个之前:

Route::get ('/{path?}/{alias}-{record_id}.html', ['uses' => 'PageItemController@show', 'as' => 'item']);
Route::get ('/{path}-{page_id}', ['uses' => 'PageCategoryController@show', 'as' => 'category']);

答案 1 :(得分:0)

这与Understand Laravel route with optional parameter

有关

您不能有可选参数,后跟必需参数。

但是,这种解决方法可能对您有用

Route::get ('/{alias}-{record_id}.html', ['uses' => 'PageItemController@show', 'as' => 'item']);
Route::get ('/{path}/{alias}-{record_id}.html', ['uses' => 'PageItemController@show', 'as' => 'item']);
Route::get ('/{path}-{page_id}', ['uses' => 'PageCategoryController@show', 'as' => 'category']);