【问题标题】:The route cant get the id from the form (Missing required parameters for [Route: update_user])路由无法从表单中获取 id(缺少 [Route: update_user] 所需的参数)
【发布时间】:2020-01-04 11:13:44
【问题描述】:

当我转到页面时:blog.local/user/1 它返回此错误:

缺少 [Route: update_user] [URI: 用户/{用户}/更新]。 (看法: C:\xampp\htdocs\blog\resources\views\login_pages\user.blade.php)

这是user.blade.php的视图:

<h2 class="mypositionclass" > welcome user: {{$user->surname . " " . $user->name}}</h2>
<hr>

<div style="text-align: center" >
    {{Form::open(['route'=>'update_user' , 'id' => $user->id]) }}
    <div>
        {{Form::label('name','Name: ',['style'=>'h3'])}}<br>
        {{Form::text('name','',['class'=>'input', 'placeholder'=>'insert name..'])}}
    </div>
    <div>
        {{Form::label('surname','Surname: ',['style'=>'h3'])}}<br>
        {{Form::text('surname','',['class'=>'input', 'placeholder'=>'insert surname..'])}}
    </div>
    <div>
        {{Form::label('email','Email: ',['style'=>'h3'])}}<br>
        {{Form::email('email','',['class'=>'input', 'placeholder'=>'insert email..'])}}
    </div>
    <div>
        {{Form::label('password','Password: ',['style'=>'h3'])}}<br>
        {{Form::password('passeword',['class'=>'input', 'placeholder'=>'insert password..'])}}
    </div>
    <div>
        {{Form::submit('update',['class'=>'button', 'style' => 'background-color: blue'])}}<br><br>
        {{Form::close()}}
    </div>
</div>

这是路线:

Route::post('/user/{user}/update', 'Login_pageController@update')->name('update_user');

这是来自Login_pageController.php的函数update()

public function update(Request $request, $id)
{
    $request::validate([
        'name'=>'required',
        'surname'=>'required',
        'email'=>'required',
        'password'=>'required'
    ]);

    $user=User::findOrFail($id);
    $user->name= $request->name;
    $user->surname= $request->surname;
    $user->email= $request->email;
    $user->password= $request->password;
    $user->save();
    return view('login_pages.login_page');
}

【问题讨论】:

  • 我认为你可以只使用{{ Form::open(['route'=&gt;'update_user', $user-&gt;id]) }}(删除'id' =&gt;),或者将其作为数组传递{{ Form::open([ 'route'=&gt;'update_user' , ['id' =&gt; $user-&gt;id] ]) }}
  • 酷!。有人写了一个答案然后删除了它,我不知道为什么。请注意,LaravelCollective 也有 Form Model Binding 供您进行更新时使用
  • @sergioo 在 SO 上说 thank you 的最佳方式是 acceptupvote @porloscerros-Ψ 回答。

标签: php laravel laravel-5


【解决方案1】:

您可以使用只需删除'id' =&gt;

{{ Form::open(['route'=>'update_user', $user->id]) }}

或将其作为数组传递:

{{ Form::open([ 'route'=>'update_user' , ['id' => $user->id] ]) }}

请注意,LaravelCollective 也有 Form Model Binding 供您进行更新时使用。

通常,您会希望根据模型的内容来填充表单。为此,请使用Form::model 方法:

{{ Form::model($user, ['route' =&gt; ['update_user', $user-&gt;id]]) }}

现在,当您生成表单元素(如文本输入)时,模型的值 匹配字段名称将自动设置为字段 价值。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 2021-09-02
    • 1970-01-01
    • 2020-02-27
    • 2021-09-19
    • 2019-01-09
    • 2020-08-07
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多