我创建了一个自定义控制器操作来保存配置对象的“第二级”,因为初始表单会保存凭据,然后用于从Web服务中提取可用项目。
第二级配置方法是
ConfigurationController
public function storeTest(Request $request)
{
dd($request);
}
路由已添加到web.php
路由文件中:
web.php
// configuration routes
Route::resource('configurations', 'ConfigurationController');
Route::put('configurations/test/{$id}', 'ConfigurationController@storeTest')->name('configurations.test_update');
php artisan route:list
的输出正确显示路线:
| PUT | configurations/test/{$id} | configurations.test_update | App\Http\Controllers\ConfigurationController@storeTest | web
最后我的表单,使用LaravelCollective表单包:
{!! Form::model($configuration, ['action' => ['ConfigurationController@storeTest', $configuration->id], 'method' => 'put']) !!}
在表单页面上查看源代码显示该操作看起来正确:
<form method="POST" action="http://myapp.app/configurations/test/20010504142745046252000000" accept-charset="UTF-8"><input name="_method" type="hidden" value="PUT">
但是当提交表单时,会抛出一个错误,指出NotFoundHttpException in RouteCollection.php line 161
答案 0 :(得分:0)
错误非常简单。在路线中,您不需要将美元符号与变量一起使用:
Route::put('configurations/test/{$id}', 'ConfigurationController@storeTest')->name('configurations.test_update');
不正确。它应该只读:
Route::put('configurations/test/{id}', 'ConfigurationController@storeTest')->name('configurations.test_update');
这解决了这个问题。感谢那些评论的人的帮助。