【问题标题】:Nested Resource : Missing required parameters (laravel)嵌套资源:缺少必需的参数(laravel)
【发布时间】:2017-02-24 12:09:13
【问题描述】:

我对 Laravel 很陌生,说实话 - 这是一个很棒的框架。然而,我对一些嵌套资源有点困惑——包括对它们进行 CRUD。

对于我正在使用的路线

Route::resource('startups','StartupsController');
Route::resource('startups.usecases','UsecasesController');

php 工匠路线:列表

|        | GET|HEAD  | admin/startups                                   | admin.startups.index            | App\Http\Controllers\StartupsController@index                               | web,admin,auth:admin |
|        | POST      | admin/startups                                   | admin.startups.store            | App\Http\Controllers\StartupsController@store                               | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/create                            | admin.startups.create           | App\Http\Controllers\StartupsController@create                              | web,admin,auth:admin |
|        | DELETE    | admin/startups/{startup}                         | admin.startups.destroy          | App\Http\Controllers\StartupsController@destroy                             | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/{startup}                         | admin.startups.show             | App\Http\Controllers\StartupsController@show                                | web,admin,auth:admin |
|        | PUT|PATCH | admin/startups/{startup}                         | admin.startups.update           | App\Http\Controllers\StartupsController@update                              | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/{startup}/edit                    | admin.startups.edit             | App\Http\Controllers\StartupsController@edit                                | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/{startup}/usecases                | admin.startups.usecases.index   | App\Http\Controllers\UsecasesController@index                               | web,admin,auth:admin |
|        | POST      | admin/startups/{startup}/usecases                | admin.startups.usecases.store   | App\Http\Controllers\UsecasesController@store                               | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/{startup}/usecases/create         | admin.startups.usecases.create  | App\Http\Controllers\UsecasesController@create                              | web,admin,auth:admin |
|        | DELETE    | admin/startups/{startup}/usecases/{usecase}      | admin.startups.usecases.destroy | App\Http\Controllers\UsecasesController@destroy                             | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/{startup}/usecases/{usecase}      | admin.startups.usecases.show    | App\Http\Controllers\UsecasesController@show                                | web,admin,auth:admin |
|        | PUT|PATCH | admin/startups/{startup}/usecases/{usecase}      | admin.startups.usecases.update  | App\Http\Controllers\UsecasesController@update                              | web,admin,auth:admin |
|        | GET|HEAD  | admin/startups/{startup}/usecases/{usecase}/edit | admin.startups.usecases.edit    | App\Http\Controllers\UsecasesController@edit                                | web,admin,auth:admin |

对于父母,这里称为“初创公司”,一切都很好,我可以 CRUD 一切都很好。

对于孩子,这里称为“用例”,索引、创建和存储都可以。当我尝试在我的模板中添加编辑、删除或显示的链接时,我开始得到:缺少 [Route: admin.startups.usecases.destroy] [URI: admin/startups/{startup}/usecases 所需的参数/{用例}]。

我的索引刀片文件中的链接:

<li><a href="{{ route('admin.startups.usecases.show',$startup->id, $usecase->id) }}">Show</a></li> 

返回那个错误。

在我的 UsecasesController 中

public function show($startup_id, $usecase_id)
    {
        $startups = $startup_id;
        $usecase = Usecase::find($usecase_id);
        return view('admin.startups.usecases.show')
        ->with('usecase', $usecase)
        ->with('startups', $startups);
    }

TLDR:我可以访问和 CRUD 父级“初创公司”上的所有内容。我可以为孩子创建和存储,但不能编辑、显示或删除 - 用于“用例”。

感谢您的帮助。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.4


    【解决方案1】:

    需要将参数作为数组传递:

    route('admin.startups.usecases.show', [$startup->id, $usecase->id])
    

    show() 方法将如下所示:

    public function show($startup, $usecase)
    {
        ....
    

    【讨论】:

    • 一个数组!啊……谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2021-07-20
    • 2017-12-27
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多