路由无法从表单获取ID([Route:update_user]缺少必需的参数) [英] The route cant get the id from the form (Missing required parameters for [Route: update_user])

查看:46
本文介绍了路由无法从表单获取ID([Route:update_user]缺少必需的参数)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

When i go to the page:blog.local/user/1 it returns this error:

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

Missing required parameters for [Route: update_user] [URI: user/{user}/update]. (View: 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');
}

推荐答案

您只需删除'id'=> :

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

或将其作为数组传递:

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

请注意,LaravelCollective还具有表单模型绑定表示何时进行更新.

Note that LaravelCollective also has Form Model Binding for when you want to make updates.

通常,您将需要根据模型的内容填充表单.为此,请使用 Form :: model 方法:

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

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

Now, when you generate a form element, like a text input, the model's value matching the field's name will automatically be set as the field value.

这篇关于路由无法从表单获取ID([Route:update_user]缺少必需的参数)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆