Php 具有多个参数的路线在Laravel 4中工作不正常?
我正在努力使我的网址搜索引擎优化友好。我希望我的URL像。我正在使用以下代码。但它不能正常工作 在my routes.php中Php 具有多个参数的路线在Laravel 4中工作不正常?,php,laravel-4,laravel-routing,Php,Laravel 4,Laravel Routing,我正在努力使我的网址搜索引擎优化友好。我希望我的URL像。我正在使用以下代码。但它不能正常工作 在my routes.php中 Route::get('/products/{name}-{id}', 'ProductController@showProduct'); 在我的控制器里 public function showProduct($name, $id) { echo $name; echo $id; } 如果url类似,则会显示 $name = motoe $id =
Route::get('/products/{name}-{id}', 'ProductController@showProduct');
在我的控制器里
public function showProduct($name, $id)
{
echo $name;
echo $id;
}
如果url类似,则会显示
$name = motoe
$id = 5649 ---> Working fine
$name = asus
$id = zenfone-4-5649 ---> Not working properly
如果url类似,则会显示
$name = motoe
$id = 5649 ---> Working fine
$name = asus
$id = zenfone-4-5649 ---> Not working properly
注意:不要使用like。
Route::get('/products/{name}/{id}', 'ProductController@showProduct');
我怎样才能解决这个问题呢?ThisRoute::get('/products/{name}-{id}','ProductController@showProduct');代码>只需要两个参数。一个在/products/
之后和-
之前命名为name
,另一个在-
之后命名为id
。因此,在-
之后存在的任何内容都被视为id
参数,无论它包含多少-
如果要使用更多参数,请将它们添加到路由和控制器的方法声明中。如果您有可选参数,请使用它们旁边的问号使它们在路由中成为可选参数,并在方法中将默认值指定为null
路线:
Route::get('products/{name}-{id}-{parameter1?}-{parameter2?}, ['as' => 'products', 'uses' => 'ProductController@showProduct']);
控制器的方法:
public function showProduct($name, $id, $parameter1 = null, $parameter2 = null)
{
return $name.$id.$parameter1.$parameter2;
}
呼叫路线:
{{route('products', ['aName', 'anId'])}}
或
这两种方法都有效。当然,每个人都会给出不同的url。我的问题不同。