![](/img/trans.png)
[英]Laravel URL helper: How to generate a perfect URL with query parameters and hash
[英]How to generate a url with Laravel's url generator helper with parameters that are not at the end?
通常,使用Laravel url
帮助器方法添加参数非常简单-如下:
url("foo/show/", [333]); // site.com/foo/show/333
但是,当参数位于中点时,您将如何执行此操作,例如:
url("foo/?/bar/?/show", [333,444]);
我已经尝试了以下所有失败的方法(尽管有些失败):
url("foo/?/bar/?/show", [333,444]);
// site.com/foo//333/444?/bar/?/show
url("foo/{a}/bar/{b}/show", [333,444]);
// site.com/foo/{a}/bar/{b}/show/333/444
url("foo/{a}/bar/{b}/show", ['a' => 333, 'b' => 444]);
// site.com/foo/{a}/bar/{b}/show/333/444
?
显然很重要,因为它接近结果...
我特别是在谈论未命名的路线。 因此, route
功能不是问题。 在当前项目中无法使用命名路由,因此我需要重申一下,我正在寻找url
方法的使用。
我100%同意以通常命名的路线为路。
尝试这个:
url(sprintf("foo/%d/bar/%d/show", 333, 444));
我更喜欢这种方法,而不是在不同页面上对URL进行硬编码。
Route::get('foo/{param1}/bar/{param2}/show', array('as' => 'someRoute', 'uses' => 'SomeController@someMethod'))
->where(array(
'param1' => '[a-zA-Z0-9-]+',
'param2' => '[a-zA-Z0-9-]+'
));
控制器:
public function someMethod($param1, $param2)
{
return $param1 . $param2;
}
//假设您在控制器中传递了参数
{{ route('someRoute') }}
// 如果不
{{ route('someRoute', ['param1' => 'test', 'param2' => 'routing']) }}
如果您命名路线,则可以使用route
功能。
Route::get('some/{test}/{a}/testing', ['as' => 'testRoute', 'uses' => 'SomeController@someMethod']);
Route::get('test', function() {
echo route('testRoute', ['test' => 'green', 'a' => 'purple']);
});
这将输出http://yourapp.local/some/green/purple/testing
如果参数不是GET
请求参数,而是中点路径的一部分(就像在一个问题中确切提出的那样),则可以使用Laravel的url()
帮助器来生成url,而无需使用sprintf()
:
url('foo', [333, 'bar', 444, 'show']);
// site.com/foo/333/bar/444/show
但是,正如其他答案所指出的那样,首选路由 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.