通过以下方式解决在我的应用程序中更新DB中的现有项目:
我的网址是这样的:
print(json_dict[json_tree])
在路由器中我设置了
http://localhost/project/public//structure/edit/about-us
所以这意味着,我正在构建更新查询Route::get('/structure/edit/{url}', 'StructureController@update'); //for displaying the prefilled form
Route::post('/structure/edit/{url}', 'StructureController@update'); // for saving new values
。这是我的视图文件的主要部分:
where url = $url
我不知道在哪里指出“形式行动”。所以我使用与当前url相同的url,因此路由器识别出这是post请求,我可以在同一个控制器内处理更新并选择新的(更新的)数据到我的更新表单。
问题是,当我更新{!! Form::open(['url' => URL::current()]) !!}
via表单时,新值将设置为数据库。所以这意味着,从这一刻起,旧的url不存在,但我的表单动作指向url,它不再存在。
我该怎么办?如果你知道,我的意思是......
答案 0 :(得分:0)
要更新使用patch
方法而不是post
。在web.php
Route::get('/structure/edit/{id}', 'StructureController@edit');
Route::patch('/structure/{id}/update', 'StructureController@update');
您可以使用action
或url
作为表单操作。将结构ID传递给action
{!! Form::model($structure,['action' => ['StructionController@update',$structure->id],'method'=>'patch']) !!}
答案 1 :(得分:0)
如果您执行了@smartrahat建议并仍然收到您发布的错误,那么您可以运行php artisan route:list
命令并向我们显示您的路线结构吗?