2017-04-25 98 views
0

我的路线已经资源:Laravel去总是显示()

Route::resource('/p/{p_id}/certificate', 'CertificateController'); 

但CertificateController它调用每次演出() 还当我搜索URL像

/p/#number/certificate/index 

我像这样的班级

class CertificateController extends Controller 
{ 
    public function index(Request $request, $p_id) 
    { 
    ... 
    } 
    public function show($p_id) 
    { 
    ... 
    } 

问题是什么?

+0

,还指着你对'秀()'? – hassan

+0

向我们展示'php artisan route:list'上的路线# –

回答

0

当您在Laravel中使用资源时,路线 /p/{id}将自动路由到show方法。这就是它的设计。

如果你喜欢去尝试索引之前你的这条路线,

Route::get('/p/{id}/certificate', '[email protected]'); 
+1

'CertificateController'后忘了'@ method' –

+0

Thanks @EliasSoares! –

0

对于重定向您的网址,你可以资源路线之前编写特定的方法来推动你喜欢页:

web.php

Route::get('/p/{number}/certificate/index','[email protected]'); 
0

您可以感谢删除'嵌套资源'部分的文档。

这是你如何处理嵌套的资源:

Route::resource('p.certificate', 'YourController'); 
// index - p/{p}/certificate 
// show - p/{p}/certificate/{certificate} 
// edit - p/{p}/certificate/{certificate}/edit 
// etc ... 

如果你想改变参数的名称,你可以通过第三个参数来Route::resource这是options阵列轻松办到。

Laravel Docs - 5.1 - Controllers - Restful - Nested Resources

Laravel Docs - 5.4 - Controllers - Restful - Naming Resource Route Parameters

当你查找到`/ P /#号/ ce​​rtificate` URL