Laravel 具有多个变量的表单路由

Laravel Form Routing With Multiple Variables

这是我视图中的 blade 表单标签;

{{ Form::model($client_agreement, array('route' => array( 'clients/'.$client->id.'/client-agreements.update', $client_agreement->id), 'method' => 'PUT')) }}

这是我的路线;

Route::resource('clients', 'ClientController');

Route::resource('agreements', 'AgreementController');

Route::resource('clients/{id}/client-agreements', 'ClientAgreementController');

如您所见,我正在尝试将表单提交到第三条路线。但是我一直收到错误;

Route [clients/5/client-agreements.update] not defined. 

我的所有其他 RESTful 路线似乎工作正常,但这是我第一次不得不传递多个变量。 IE。 $client->id$client_agreement->id - 它们都存在,因为我可以在屏幕上打印出来。

您正在寻找 nested resources(您需要在文档中向下滚动一点)

您只需使用 "dot" 语法指定嵌套资源,Laravel 将处理其余部分:

Route::resource('clients', 'ClientController');

Route::resource('agreements', 'AgreementController');

Route::resource('clients.agreements', 'ClientAgreementController');

URL 将是 clients/1/agreementsclients/1/agreements/1,具体取决于方法。

这也将改变函数参数在 ClientAgreementController 中的外观。

index($clientId)
create($clientId)
store($clientId)
show($clientId, $agreementId)
edit($clientId, $agreementId)
update($clientId, $agreementId)
destroy($clientId, $agreementId)