Dav*_*mov 11 php laravel laravel-4 laravel-routing
我正在尝试为无限数量的URL级别创建动态路由.
这是我目前的路线
Route::get('{pageLink}', array('uses' => 'SiteController@getPage'));
Run Code Online (Sandbox Code Playgroud)
这适用于第一级.所以像something.com/foo/这样的网址会起作用.但是,如果我有类似于something/foo/bar /的东西,它将无法捕获该URL.我需要它来匹配无限的水平.那样在我的控制器中它会给我一个变量,无论整个链接是什么.
我知道我能做到
Route::get('{pageLink}', array('uses' => 'SiteController@getPage'));
Route::get('{pageLink}/{pageLink2}', array('uses' => 'SiteController@getPage'));
Route::get('{pageLink}/{pageLink2}/{pageLink3}', array('uses' => 'SiteController@getPage'));
Run Code Online (Sandbox Code Playgroud)
但这似乎有点矫枉过正.有没有更好的方法来做到这一点,它会匹配到URL的结尾?
谢谢.
Gad*_*oma 23
你可以尝试这样的事情:
//routes.php
Route::get('{pageLink}/{otherLinks?}', 'SiteController@getPage')->where('otherLinks', '(.*)');
Run Code Online (Sandbox Code Playgroud)
请记住将上面的内容放在routes.php文件的最后(底部),因为它就像一个'catch all'路由,因此您必须首先定义所有"更具体"的路由.
//controller
class SiteController extends BaseController {
public function getPage($pageLink, $otherLinks = null)
{
if($otherLinks)
{
$otherLinks = explode('/', $otherLinks);
//do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法应该让你使用无限量的参数,所以这是你似乎需要的.
| 归档时间: |
|
| 查看次数: |
3914 次 |
| 最近记录: |