拉拉维尔的route()
and action()
辅助方法支持 URL 查询参数。这url()
不幸的是,辅助方法没有。
只需向路由参数提供一个包含 key => value 对的数组即可。例如:
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()
and 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()
or action()
,您可以使用以下命令生成带有查询参数的 URLArr::query()
helper:
url('/products?').\Illuminate\Support\Arr::query(['manufacturer' => 'Samsung']);
// Returns 'http://localhost/products?manufacturer=Samsung'
Or:
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'