Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-如何正确使用高级路由_Php_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel-如何正确使用高级路由

Php Laravel-如何正确使用高级路由,php,laravel,laravel-4,Php,Laravel,Laravel 4,我有一个分类和子分类的书单 每个类别都有许多子类别。在我的模型中,每个子类别都属于一个类别 现在,我希望有如下路线: Route::resource('categories', 'ReligionsController'); Route::resource('category/{category?}', 'ReligionBranchController'); Route::get('category/{category?}/{subcategory?}', function() {

我有一个分类和子分类的书单

每个类别都有许多子类别。在我的模型中,每个子类别都属于一个类别

现在,我希望有如下路线

Route::resource('categories', 'ReligionsController');

Route::resource('category/{category?}', 'ReligionBranchController');

Route::get('category/{category?}/{subcategory?}', function()
{
    return 'Quitter never win';
});
 example.org/category/fear/thriller
 example.org/category/love/drama
 example.org/category/love/science-fiction
书籍/{类别?}

书籍/{category?}/{subcategory?}

我的路线如下所示:

Route::resource('categories', 'ReligionsController');

Route::resource('category/{category?}', 'ReligionBranchController');

Route::get('category/{category?}/{subcategory?}', function()
{
    return 'Quitter never win';
});
 example.org/category/fear/thriller
 example.org/category/love/drama
 example.org/category/love/science-fiction
现在的问题是,我的第二条路线与我的宗教信仰控制器完美配合,但我的最后一条路线(第三条)根本不起作用,我得到了以下信息:

 Route pattern "/categories/{category}/{{category}}" cannot reference variable name "category" more than once.
我将如何使用这样的动态路线:

Route::resource('categories', 'ReligionsController');

Route::resource('category/{category?}', 'ReligionBranchController');

Route::get('category/{category?}/{subcategory?}', function()
{
    return 'Quitter never win';
});
 example.org/category/fear/thriller
 example.org/category/love/drama
 example.org/category/love/science-fiction

希望有人能理解我的问题。

您必须理解,Laravel试图以更快的速度解决路由问题,因此您最通用的路由必须是最后一个路由,也就是说,我建议您将路由顺序更改为:

Route::get('category/{category}/{subcategory}', function()
{
    return 'Quitter never win';
});

Route::resource('category/{category?}', 'ReligionBranchController');

Route::resource('categories', 'ReligionsController');
还有,这条路线

Route::get('category/{category?}/{subcategory?}', function() ...
完全一样

Route::get('category/{category?}', function()
如果您的用户只传递一个参数,或者根本不传递任何参数,那么我还建议将其更改为:

Route::get('category/{category}/{subcategory}', function() ...

这样,如果有人给出类别和子类别,它将输入第一个,如果只是类别或没有类别,则输入第二个。

您向我们显示的错误是第一条路线
路线模式/categories/
,而不是第三条路线,第三条路线以
category
开始,而不是
categories