我有这条路线:
Route::get('product/get/{project_token}/{user_id}/{id}', 'get_project')->where('id', '.*');
这里的
id
参数,值可以是任何字符,如
DRGM48/58BA
DRGM48/78BA+BZA43B.
1254EBD
现在,如果
id
参数值是这个 DRGM48/78BA+BZA43B
那么我可以看到路由没有传递该值。好像+ 性格不接受
你能告诉我怎么解决吗?
加号用于表示查询中的空格字符。所以为此,你必须使用
urlencode
和 urldecode
Ex
$product_id = urlencode('DRGM48/78BA+BZA43B');
在控制器中
public function get_project($project_token, $user_id, $id)
{
$product_id = urldecode($id);
// use $product_id in your code
}
我在之前的项目中遇到了同样的问题。所以,我应用了多种解决方案但没有奏效。然后我找到了下面的解决方案。
说明:“+”字符是URL中的保留字符,用于表示空格。 Laravel 的路由参数使用“+”字符作为通配符,这意味着 + 字符之后的任何文本都将被忽略。
Route::get('product/get/{project_token}/{user_id}/{id}', 'get_project')->where('id', '[A-Za-z0-9\+/]+');
希望对你有帮助。