有没有办法拥有通配符路线?但只有特定的名字。
例如
我有很多路线通往同一个地方:
/archive/gallery/1/picture/1
/masters/gallery/1/picture/1
/browse/gallery/1/picture/1
这些都加载了相同的图片,但如果我可以做这样的事情会很棒:
Route::get('{???}/gallery/{galleryId}/picture/{pictureId}', array(
'as'=>'picture',
'uses'=>'PictureController@getPicture'
));
但只能使用存档或母版或浏览为通配符。
答案 0 :(得分:1)
您无法定义其他控制器,具体取决于通配符。您必须在控制器中定义它。
Route::get('{page}/gallery/{galleryId}/picture/{pictureId}', array(
'as'=>'picture',
'uses'=>'PictureController@getPicture'
));
public function getPicture($page)
{
if ($page == "archive")
return View::make('archive');
else if ($page == "browse")
return View::make('browse');
else if ($page == "masters")
return View::make('masters');
}
请务必将路线放在路线文件的底部,否则它将覆盖其他路线:)因为laravel使用first-in - >一线>列
答案 1 :(得分:1)
你可以试试这个
Route::get('{type}/gallery/{galleryId}/picture/{pictureId}', array(
'as'=>'picture',
'uses'=>'PictureController@getPicture'
))->where('type', 'masters|browse|archive');
PictureController:
public function getPicture($type, $galleryId, $pictureId)
{
// $type could be only masters or browse or archive
// otherwise requested route won't match
// If you want to load view depending on type (using type)
return View::make($type);
}
答案 2 :(得分:0)
如果您拥有{???}
,那么这只是一个正则表达式。
也许像这样{(archive|browse|masters)}
更新:我认为以上工作在L3,但L4必须以不同的方式完成
Route::get('/{variable}', function()
{
return View::make('view');
})->where('masters', 'browse', 'archive');