【问题标题】:How can I use resource routes with nested controllers (that have parent models)如何将资源路由与嵌套控制器(具有父模型)一起使用
【发布时间】:2019-05-18 13:04:57
【问题描述】:

我正在创建具有以下结构的 Elequent 模型:

Event->hasMany(Invite)
Invite->belongsTo(Event)

我正在使用以下工匠命令创建控制器:

php artisan make:controller -mInvite -pEvent EventInvitesController --resource

现在,如果我创建自定义路线,例如:

Route::get('event/{event}/invite', 'EventInvitesController@index')->name('event.invites.index');
Route::post('event/{event}/invite', 'EventInvitesController@store')->name('event.invites.store');
Route::get('event/{event}/invite/{invite}', 'EventInvitesController@show')->name('event.invites.show');
Route::put('event/{event}/invite/{invite}', 'EventInvitesController@update')->name('event.invites.update');
Route::delete('event/{event}/invite/{invite}', 'EventInvitesController@destroy')->name('event.invites.destroy');
Route::get('event/{event}/invite/{invite}/edit', 'EventInvitesController@edit')->name('event.invites.edit');

然后一切正常。但我想知道是否有办法做到这一点

Route::resource('event-invites', 'EventInvitesController');

当我尝试这样做时,当我需要两个时,路线只有一个 {event_invites} 参数。

有没有办法在 Route::resource() 中为父模型启用路由? 如果不是,我将如何扩展 Route 以提供这样的方法?

【问题讨论】:

    标签: php laravel eloquent crud nested-routes


    【解决方案1】:

    使用点符号:

    Route::resource('events.invites', 'EventInvitesController');
    

    这将为包含用户标识符的帖子创建一组路由。例如:

    在此处查看文档:

    https://laravel.com/docs/5.1/controllers#restful-nested-resources

    【讨论】:

    • @Kaan 编码快乐 :) 如果你对 Laravel 很感兴趣,请查看我的博客:kerneldev.com
    • 为什么在以后的 Laravel 版本(5.1 之后)中不再记录这一点?它仍然有效,这不是我的问题。也许有一些新的哲学?
    • @Ametad 我也觉得很奇怪。我不知道为什么想到,我的第一个想法是他们忘了包括它?我不知道。如果您真的想知道原因,可以尝试在 GitHub 上打开一个问题。
    猜你喜欢
    • 2014-08-15
    • 2021-10-19
    • 2013-01-31
    • 1970-01-01
    • 2013-01-23
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多