更新无效 - 错误将数据从表单传递到更新方法

时间:2018-02-25 16:52:57

标签: laravel

我有一个表单来编辑帖子的管理员。

此表单有一些单选按钮。每个单选按钮对应一个帖子的管理员,因此每个单选按钮的ID 是管理员表中管理员的ID。

单击提交按钮时,我只想更新管理员,其中包含已选中管理员/单选按钮的ID。

为此,应该有必要将post的id和选中的单选按钮(管理员)的id传递给update方法,然后仅更新该管理员id。

我成功传递了帖子的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');
    }
}

1 个答案:

答案 0 :(得分:1)

编辑路线:

{{route('admins.update', ['id' => $post->id], ['adminID' => $admin->id])}}

到:

{{route('admins.update', ['id' => $post->id, 'adminID' => $admin->id])}}

编辑:确保在定义路线之前对管理员进行管理。

表单上还有一些其他错误,例如foreach($administrators as $admin) $admin将无法用于上述路由,因此请进行调整。