Php 具有多个参数的路线在Laravel 4中工作不正常?

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 =

我正在努力使我的网址搜索引擎优化友好。我希望我的URL像。我正在使用以下代码。但它不能正常工作

在my routes.php中

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');
我怎样才能解决这个问题呢?

This
Route::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。

我的问题不同。