1

我有一些 Laravel 的路线问题。我想是因为我没有采取好的方法,但是...

这是我的代码:

Route::group(array('prefix' => 'products'), function()
{
    Route::get('', array('uses'=>'products@index'));
    //show all the products 

    Route::get('{Categorie}',array('uses'=>'products@categorie'))->where('Categorie','^[A-Z][a-z0-9_-]{3,19}$');
    //show the products of this categorie   

    Route::get('{shopname}',array('uses'=>'products@shopname'))->where('shopname','^[a- z][a-z0-9_-]{3,19}$');
     //show the product of this shopname
});

Route::group(array('prefix' => '/products/{:any}'), function()
{
   //no index because productName is not optionnal

    Route::get('{productName}', array('uses'=>'product@getProduct'));
    //the Product controller is now SINGULAR
    //show this product in particular
});

所以它适用于第一组... mysite.fr/products => ok mysite.fr/MyCategorie => ok mysite.fr/mashopname => ok

但是当我添加第二个参数时:

mysite.fr/products/myshopname/myfirstproduct

我收到了一个带有特定消息的错误...

非常感谢你的帮助 !

4

1 回答 1

1

这里的问题是这些都是相同的路线。Laravel 不知道什么可以算作类别、商店名称或任何其他名称。例如,如果我转到/products/test,Laravel 将不知道 test 是类别、商店名称还是产品名称。

试试这个...

Route::group(array('prefix' => 'products'), function()
{
    Route::get('/', array('uses'=>'products@index'));
    //show all the products 

    Route::get('categorie/{Categorie}',array('uses'=>'products@categorie'))->where('Categorie','^[A-Z][a-z0-9_-]{3,19}$');
    //show the products of this categorie   

    Route::get('shopname/{shopname}',array('uses'=>'products@shopname'))->where('shopname','^[a- z][a-z0-9_-]{3,19}$');
    //show the product of this shopname

    Route::get('product/{productName}', array('uses'=>'product@getProduct'));
    //the Product controller is now SINGULAR
});

这样,如果我去products/categorie/test,Laravel 会知道我正在寻找一个categorie并且能够适当地路由我。

更新:

如果Hightech是一个类别并且product_1是一个产品,你可以使用这样的路线......

    Route::get('category/{categorie}/product/{product}',array('uses'=>'products@categorie'))->where('categorie','^[A-Z][a-z0-9_-]{3,19}$')->where('product','^[A-Z][a-z0-9_-]{3,19}$');
    //show the products of this categorie   

然后 URL 将是.com/products/category/Hightech/product/product_1. 或者你可以/product出去/category走走,你可以去.com/products/Hightech/product_1

于 2013-10-28T12:20:38.133 回答