Laravel 的 route() 和 action() 辅助方法支持 URL 查询参数。 url() 辅助方法,不幸的是没有。
只需为路由参数提供一个包含键值的数组。例如:
route('products.index', ['manufacturer' => 'Samsung']);
// Returns 'http://localhost/products?manufacturer=Samsung'
您还可以包含路由参数(例如 ID 和模型)来伴随这些参数:
route('products.show', [$product->id, 'model' => 'T9X']);
// Returns 'http://localhost/products/1?model=T9X'
基本上,数组中包含字符串键的任何元素都将被视为查询参数(/products?param=value)。任何带有整数键的内容都将被视为 URL 参数 (/products/{arg})。
动作方法也支持这一点:
action('ProductController@index', ['manufacturer' => 'Samsung']);
您还可以在 link_to_route() 和 link_to_action() 方法中提供查询参数:
link_to_route('products.index', 'Products by Samsung', ['model' => 'Samsung');
link_to_action('ProductController@index', 'Products by Samsung', ['model' => 'Samsung']);
2019 - 编辑:
如果您不能使用route() 或action(),您可以使用Arr::query() 帮助器生成带有查询参数的URL:
url('/products?').\Illuminate\Support\Arr::query(['manufacturer' => 'Samsung']);
// Returns 'http://localhost/products?manufacturer=Samsung'
或者:
url('/products?').http_build_query(['manufacturer' => 'Samsung'], null, '&', PHP_QUERY_RFC3986);
// Returns 'http://localhost/products?manufacturer=Samsung'
或者创建一个简单的辅助函数:
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
function url_query($to, array $params = [], array $additional = []) {
return Str::finish(url($to, $additional), '?') . Arr::query($params);
}
然后调用它:
url_query('products', ['manufacturer' => 'Samsung']);
// Returns 'http://localhost/products?manufacturer=Samsung'
url_query('products', ['manufacturer' => 'Samsung'], [$product->id]);
// Returns 'http://localhost/products/1?manufacturer=Samsung'