更新数据库ID,如何处理表单url

时间:2018-02-03 21:38:19

标签: php laravel formbuilder

通过以下方式解决在我的应用程序中更新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,它不再存在。 我该怎么办?如果你知道,我的意思是......

2 个答案:

答案 0 :(得分:0)

要更新使用patch方法而不是post。在web.php

中写下来
Route::get('/structure/edit/{id}', 'StructureController@edit');
Route::patch('/structure/{id}/update', 'StructureController@update');

您可以使用actionurl作为表单操作。将结构ID传递给action

的第二个参数
{!! Form::model($structure,['action' => ['StructionController@update',$structure->id],'method'=>'patch']) !!}

答案 1 :(得分:0)

如果您执行了@smartrahat建议并仍然收到您发布的错误,那么您可以运行php artisan route:list命令并向我们显示您的路线结构吗?