gpt4 book ai didi

php - 带有查询字符串的 Laravel 路由 url

转载 作者:IT王子 更新时间:2023-10-28 23:48:38 27 4
gpt4 key购买 nike

在 laravel 4 上,我可以使用 route() 助手生成一个带有查询字符串的 url。但是在 4.1 而不是:

$url = url('admin.events', array('lang' => 'en'));
// admineventsurl/?lang=en

我得到:

$url = url('admin.events', array('lang' => 'en'));
// admineventsurl/en

我做了一些研究,所有生成 url 的 laravel 方法都使用这样的参数。如何生成带有查询字符串的 url?

最佳答案

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 方法也支持这一点:

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'

关于php - 带有查询字符串的 Laravel 路由 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21632835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com