我使用Laravel 5.5并对路由有疑问。
我的路线是这样的
Route::get('/folder/{param}', 'PageController@getFolderTree');
我想在/ folder /:
之后获取所有参数http://example.com/folder/com/example/app - >我得/ example / app
怎么可能?
答案 0 :(得分:1)
如果您事先知道参数的最大数量,则可以执行下一个参数之一。
a)如果all are neccessery:
Route::get('/folder/{a}/{b}/{c}', 'PageController@getFolderTree');
Route::get('/folder/{a?}/{b?}/{c?}', 'PageController@getFolderTree');
并像这样检索它们:
public function getFolderTree($a, $b, $c) {...}
如果你不知道最大值,你需要做一个正则表达式并爆炸。这将是路线:
Route::get('/folder/{any}', 'PageController@getFolderTree')
->where('any', '.*'); // Indicates that {any} can be anything
在控制器中进行爆炸:
public function getFolderTree($any) {
{
$params = explode('/', $any); // $params will be an array of params
}
答案 1 :(得分:0)
您可以explode
该网址。例如:
$url = 'http://example.com/folder/com/example/app';
$explodedText = explode('/folder/', $url);
$textBeforeFolder = $explodedText[0];
$textAfterFolder = $explodedText[1]; // This is the one you want
答案 2 :(得分:0)
request->url() //will return the whole url
和
request()->uri() //will return the URI
现在,如果您想访问完整的URL,您可以访问
request()-fullUrl() //will return the full url
现在您可以使用str_replace()
str_replace(request()->url.'folder/com/','', request->fullUrl());
//it will return example/app