编辑“Metier”时会创建新的“Metier”
New “Metier” is created when editing a “Metier”
当我尝试编辑 "Metier" 时,会创建一个新的 "Metier" 而旧的保持不变。我想粉碎旧的 "Metier" 并通过编辑创建一个新的。这是我与编辑功能相关的代码。
控制器
public function edit($id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
查看
<div class="form-group">
<label for="">libelle Metier </label>
<input type="text" name ="libelle_metier" class="form-control"value ="
{{$libelle_metier->libelle_metier}}" >
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-control btn btn-
primary">
</div>
路线
Route::get('/metier', 'MetierController@index');
Route::get('/metier/create', 'MetierController@create');
Route::post('/metier', 'MetierController@store');
Route::get('/metier/{id}/show', 'MetierController@edit');
Route::get('/metier/{id}/edit', 'MetierController@edit');
Route::upd('/metier/{id}/update', 'MetierController@update');
Route::delete('/metier/{id}', 'MetierController@destroy')
MetierController.php
public function edit($id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$metier = Metier::find($id);
$metier->libelle_metier = $request->libelle_metier;
$metier->save();
return back();
}
edit.blade.php
@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10">
<h1>Modifier Metier </h1>
<form action=" {{url ('metier') }}" method="post">
{{csrf_field()}}
<div class="form-group">
<label for="">libelle Metier </label>
<input type="text" name ="libelle_metier" class="form-
control"value ="
{{$libelle_metier->libelle_metier}}" >
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-control
btn btn-
primary">
</div>
</form>
</div>
</div>
@endsection
那是因为您甚至没有尝试更新数据库记录。改为做这样的事情:
public function update(Request $request, $id)
{
Metier::where('id', $id)->update($request->all());
return back();
}
或不使用批量分配:
public function update(Request $request, $id)
{
$metier = Metier::find($id);
$metier->libelle_metier = $request->libelle_metier;
$metier->save();
return back();
}
更新
感谢您分享整个表格。您还使用了 POST
方法而不是 PUT
。更改表单 URL 并将此字段添加到表单:
<form action="{{ url('metier/' . $libelle_metier->id . '/update') }}" method="post">
{{ method_field('PUT') }}
然后将执行update()
方法而不是store()
。
并将路线更改为 put
:
Route::put('/metier/{id}/update', 'MetierController@update');
此外,最好使用 Route::resource
而不是手动创建相同的路由。它将让您避免此类错误。
将 {{ method_field('PATCH') }}
添加到您的表单并将操作更改为命名路由并将 metier id 传递给它。
@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10">
<h1>Modifier Metier </h1>
<form action="{{ route('metier.update', $libelle_metier->id) }}" method="post">
{{csrf_field()}}
{{ method_field('PATCH') }}
<div class="form-group">
<label for="">libelle Metier </label>
<input type="text" name ="libelle_metier" class="form-
control"value ="
{{$libelle_metier->libelle_metier}}" >
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-control
btn btn-
primary">
</div>
</form>
</div>
</div>
@endsection
路由文件
Route::patch('/metier/{id}/update', 'MetierController@update')->name('metier.update');
提示:删除所有这些
Route::get('/metier', 'MetierController@index');
Route::get('/metier/create', 'MetierController@create');
Route::post('/metier', 'MetierController@store');
Route::get('/metier/{id}/show', 'MetierController@edit');
Route::get('/metier/{id}/edit', 'MetierController@edit');
Route::upd('/metier/{id}/update', 'MetierController@update');
Route::delete('/metier/{id}', 'MetierController@destroy')
并且要么将其全部添加为单个资源,以便一次添加所有 REST url。
这就是它的 REST 规范应该如何。阅读
REST Resource Naming Guide and here
Route::resource('metier', 'MetierController');
或以这种方式添加而不是资源
Route::get('/metier', 'MetierController@index')->name('metier.index');
Route::get('/metier/create', 'MetierController@create')->name('metier.create');
Route::post('/metier', 'MetierController@store')->name('metier.store');
Route::get('/metier/{id}', 'MetierController@show')->name('metier.show');
Route::get('/metier/{id}/edit', 'MetierController@edit')->name('metier.edit');
Route::patch('/metier/{id}', 'MetierController@update')->name('metier.update');
Route::delete('/metier/{id}', 'MetierController@destroy')->name('metier.destroy');
控制器
public function edit($id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
public function update(Request $request, $id)
{
// do some request validation
$metier=Metier::find($id);
$metier->update($request->all());
return redirect()->route('metier.show', $metier->id);
}
如果您遇到质量分配错误。
将 protected $guarded = [];
添加到 Metier 模型
当我尝试编辑 "Metier" 时,会创建一个新的 "Metier" 而旧的保持不变。我想粉碎旧的 "Metier" 并通过编辑创建一个新的。这是我与编辑功能相关的代码。
控制器
public function edit($id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
查看
<div class="form-group">
<label for="">libelle Metier </label>
<input type="text" name ="libelle_metier" class="form-control"value ="
{{$libelle_metier->libelle_metier}}" >
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-control btn btn-
primary">
</div>
路线
Route::get('/metier', 'MetierController@index');
Route::get('/metier/create', 'MetierController@create');
Route::post('/metier', 'MetierController@store');
Route::get('/metier/{id}/show', 'MetierController@edit');
Route::get('/metier/{id}/edit', 'MetierController@edit');
Route::upd('/metier/{id}/update', 'MetierController@update');
Route::delete('/metier/{id}', 'MetierController@destroy')
MetierController.php
public function edit($id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$metier = Metier::find($id);
$metier->libelle_metier = $request->libelle_metier;
$metier->save();
return back();
}
edit.blade.php
@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10">
<h1>Modifier Metier </h1>
<form action=" {{url ('metier') }}" method="post">
{{csrf_field()}}
<div class="form-group">
<label for="">libelle Metier </label>
<input type="text" name ="libelle_metier" class="form-
control"value ="
{{$libelle_metier->libelle_metier}}" >
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-control
btn btn-
primary">
</div>
</form>
</div>
</div>
@endsection
那是因为您甚至没有尝试更新数据库记录。改为做这样的事情:
public function update(Request $request, $id)
{
Metier::where('id', $id)->update($request->all());
return back();
}
或不使用批量分配:
public function update(Request $request, $id)
{
$metier = Metier::find($id);
$metier->libelle_metier = $request->libelle_metier;
$metier->save();
return back();
}
更新
感谢您分享整个表格。您还使用了 POST
方法而不是 PUT
。更改表单 URL 并将此字段添加到表单:
<form action="{{ url('metier/' . $libelle_metier->id . '/update') }}" method="post">
{{ method_field('PUT') }}
然后将执行update()
方法而不是store()
。
并将路线更改为 put
:
Route::put('/metier/{id}/update', 'MetierController@update');
此外,最好使用 Route::resource
而不是手动创建相同的路由。它将让您避免此类错误。
将 {{ method_field('PATCH') }}
添加到您的表单并将操作更改为命名路由并将 metier id 传递给它。
@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10">
<h1>Modifier Metier </h1>
<form action="{{ route('metier.update', $libelle_metier->id) }}" method="post">
{{csrf_field()}}
{{ method_field('PATCH') }}
<div class="form-group">
<label for="">libelle Metier </label>
<input type="text" name ="libelle_metier" class="form-
control"value ="
{{$libelle_metier->libelle_metier}}" >
</div>
<div class="form-group">
<input type="submit" value = "enregistrer" class="form-control
btn btn-
primary">
</div>
</form>
</div>
</div>
@endsection
路由文件
Route::patch('/metier/{id}/update', 'MetierController@update')->name('metier.update');
提示:删除所有这些
Route::get('/metier', 'MetierController@index');
Route::get('/metier/create', 'MetierController@create');
Route::post('/metier', 'MetierController@store');
Route::get('/metier/{id}/show', 'MetierController@edit');
Route::get('/metier/{id}/edit', 'MetierController@edit');
Route::upd('/metier/{id}/update', 'MetierController@update');
Route::delete('/metier/{id}', 'MetierController@destroy')
并且要么将其全部添加为单个资源,以便一次添加所有 REST url。 这就是它的 REST 规范应该如何。阅读 REST Resource Naming Guide and here
Route::resource('metier', 'MetierController');
或以这种方式添加而不是资源
Route::get('/metier', 'MetierController@index')->name('metier.index');
Route::get('/metier/create', 'MetierController@create')->name('metier.create');
Route::post('/metier', 'MetierController@store')->name('metier.store');
Route::get('/metier/{id}', 'MetierController@show')->name('metier.show');
Route::get('/metier/{id}/edit', 'MetierController@edit')->name('metier.edit');
Route::patch('/metier/{id}', 'MetierController@update')->name('metier.update');
Route::delete('/metier/{id}', 'MetierController@destroy')->name('metier.destroy');
控制器
public function edit($id)
{
$metier=Metier::find($id);
return view('metier.edit',['libelle_metier'=>$metier]);
}
public function update(Request $request, $id)
{
// do some request validation
$metier=Metier::find($id);
$metier->update($request->all());
return redirect()->route('metier.show', $metier->id);
}
如果您遇到质量分配错误。
将 protected $guarded = [];
添加到 Metier 模型