更新不起作用 - 将数据从表单传递到更新方法时出错
update is not working - error passing data from form to the update method
我有一个表格可以编辑 post 的管理员。
此表单有一些单选按钮。每个radio button对应一个管理员post,所以每个radio button的id
是administratorstable.
中admin的id
单击提交按钮后,我只想使用选中的 administrator/radio 按钮的 ID 更新管理员。
为此,应该有必要将 post 的 ID 和选中的单选按钮(管理员)的 ID 传递给更新方法,然后仅更新该管理员 ID。
我成功传递了 post 的 ID,但没有传递管理员 ID。出现语法错误,意外的 '{'.
编辑管理员表单:
<form method="post" class="clearfix" action="{{route('admins.update', ['id' => $post->id], ['adminID' => $admin->id])}}" enctype="multipart/form-data">
{{csrf_field()}}
@foreach($administrators $admin)
<div class="form-check">
<input class="form-check-input" type="radio" name="radiobutton" id="{{$admin->id}}" value="">
<label class="form-check-label" for="">
{{$admin->first_name}}
</label>
</div>
@endforeach
<!-- below I have form fields like administrator name, email, etc -->
</form>
//更新管理员路由
Route::get('post/edit/{id}/admins', [ 'uses' => 'AdminController@edit', 'as'=>'admins.edit']);
Route::post('post/update/{id}/admins', [ 'uses' => 'AdminController@update', 'as'=>'admins.update']);
// 管理员控制器
class AdministratorController extends Controller
{
public function edit($id)
{
$post = Post::find($id);
$administrators = Administrator::where('post_id', $id)->get();
return view('administrators.edit')
->with('post', $post)
->with('administrators', $administrators));
}
public function update(Request $request, $id, $adminID){
$this->validate($request, [
'name' => 'required|string',
'email' => 'required|integer',
'...' => '...',
]);
$post = Post::find($id);
$admin = Administrator::find($post->id);
$administratorToUpdate = Administrator::find($adminID);
$administratorToUpdate->name = $request->name;
$administratorToUpdate->email = $request->email;
....
$administratorToUpdate->save();
}
// 管理模型
class Administrator extends Model
{
protected $fillable = [
'first_name', 'email', 'password', 'description', 'post_id'
];
public function post(){
return $this->belongsTo('App\Post');
}
}
编辑路线来自:
{{route('admins.update', ['id' => $post->id], ['adminID' => $admin->id])}}
至:
{{route('admins.update', ['id' => $post->id, 'adminID' => $admin->id])}}
编辑:确保在定义路由之前遍历管理员。
表格上还有一些其他错误,例如 foreach($administrators as $admin)
$admin
将不适用于上述路线,因此请进行调整。
我有一个表格可以编辑 post 的管理员。
此表单有一些单选按钮。每个radio button对应一个管理员post,所以每个radio button的id 是administratorstable.
中admin的id单击提交按钮后,我只想使用选中的 administrator/radio 按钮的 ID 更新管理员。
为此,应该有必要将 post 的 ID 和选中的单选按钮(管理员)的 ID 传递给更新方法,然后仅更新该管理员 ID。
我成功传递了 post 的 ID,但没有传递管理员 ID。出现语法错误,意外的 '{'.
编辑管理员表单:
<form method="post" class="clearfix" action="{{route('admins.update', ['id' => $post->id], ['adminID' => $admin->id])}}" enctype="multipart/form-data">
{{csrf_field()}}
@foreach($administrators $admin)
<div class="form-check">
<input class="form-check-input" type="radio" name="radiobutton" id="{{$admin->id}}" value="">
<label class="form-check-label" for="">
{{$admin->first_name}}
</label>
</div>
@endforeach
<!-- below I have form fields like administrator name, email, etc -->
</form>
//更新管理员路由
Route::get('post/edit/{id}/admins', [ 'uses' => 'AdminController@edit', 'as'=>'admins.edit']);
Route::post('post/update/{id}/admins', [ 'uses' => 'AdminController@update', 'as'=>'admins.update']);
// 管理员控制器
class AdministratorController extends Controller
{
public function edit($id)
{
$post = Post::find($id);
$administrators = Administrator::where('post_id', $id)->get();
return view('administrators.edit')
->with('post', $post)
->with('administrators', $administrators));
}
public function update(Request $request, $id, $adminID){
$this->validate($request, [
'name' => 'required|string',
'email' => 'required|integer',
'...' => '...',
]);
$post = Post::find($id);
$admin = Administrator::find($post->id);
$administratorToUpdate = Administrator::find($adminID);
$administratorToUpdate->name = $request->name;
$administratorToUpdate->email = $request->email;
....
$administratorToUpdate->save();
}
// 管理模型
class Administrator extends Model
{
protected $fillable = [
'first_name', 'email', 'password', 'description', 'post_id'
];
public function post(){
return $this->belongsTo('App\Post');
}
}
编辑路线来自:
{{route('admins.update', ['id' => $post->id], ['adminID' => $admin->id])}}
至:
{{route('admins.update', ['id' => $post->id, 'adminID' => $admin->id])}}
编辑:确保在定义路由之前遍历管理员。
表格上还有一些其他错误,例如 foreach($administrators as $admin)
$admin
将不适用于上述路线,因此请进行调整。