我正在尝试为无限数量的 URL 级别创建动态路由。
这是我当前的路线
Route::get('{pageLink}', array('uses' => 'SiteController@getPage'));
这适用于第一级。所以像something.com/foo/这样的URL就可以了。但如果我有类似something.com/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'));
但这似乎有点矫枉过正。有没有更好的方法来做到这一点,以便它匹配 URL 的末尾?
Thanks.
你可以尝试这样的事情:
//routes.php
Route::get('{pageLink}/{otherLinks?}', 'SiteController@getPage')->where('otherLinks', '(.*)');
请记住将上述内容放在routes.php 文件的最后(底部),因为它就像“捕获所有”路由,因此您必须首先定义所有“更具体”的路由。
//controller
class SiteController extends BaseController {
public function getPage($pageLink, $otherLinks = null)
{
if($otherLinks)
{
$otherLinks = explode('/', $otherLinks);
//do stuff
}
}
}
这种方法应该让您使用无限数量的参数,所以这似乎是您所需要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)