【问题标题】:Laravel 5 Multiple form validation rulesLaravel 5 多表单验证规则
【发布时间】:2016-02-18 11:53:57
【问题描述】:

所以我在一页上有三个表格。一种是更改用户头像,另一种是更新个人信息,最后一种是设置新密码。 我的问题是,即使我正在尝试更新某些信息,我在密码和密码确认字段上仍出现验证错误(第二种形式)。

我创建了两个请求:

用户编辑请求

class UserEditRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'firstname' => 'required',
            'lastname' => 'required'
        ];       
    }
}

用户更新密码请求

class UserUpdatePasswordRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'password' => 'required|confirmed|min:6',
            'password_confirmation' => 'required|min:6',
        ];      
    }
}

在用户控制器中updatePassword

public function updatePassword(UserUpdatePasswordRequest $request, $id)
{
    $user = User::findOrFail($id);
    $user->password = bcrypt($request->get('password'));
    $user->save();

    return redirect()->route('user.edit',$id)->with('success','Password changed.');
}

postEdit,我在其中处理个人详细信息和头像更改:

public function postEdit(UserEditRequest $request, $id)
{
    dd($request->all());
    $user = User::findOrFail($id);

    if($request->get('avatar'))
    {
        $destinationPath = public_path() . '/avatars/' . $user->id . '/';
        $fileName = $user->id . '.' . $request->file('avatar')->getClientOriginalExtension();
        $request->file('avatar')->move($destinationPath, $fileName);
        $user->avatar = 'avatars/' . $user->id . '/' . $fileName;
        $user->save();
        return redirect()->route('user.edit',$id)->with('success','User avatar modified.');
    }
    $user->fill($request->input())->save();

    return redirect()->route('user.edit',$id)->with('success','User details modified.');
}

快速了解我的路线:

Route::group(['prefix' => 'user', 'as' => 'user.'], function () {

        Route::get('profile/{userid}', ['as' => 'edit', 'uses' => 'UserController@getEdit']);
        Route::post('profile/{userid}', ['as' => 'edit', 'uses' => 'UserController@postEdit']);
        Route::post('profile/{userid}', ['as' => 'updatepassword', 'uses' => 'UserController@updatePassword']);

    });
});

【问题讨论】:

    标签: laravel-5 laravel-validation


    【解决方案1】:

    尝试区分 postEdit 和 updatePassword 控制器操作的路由

    Route::post('profile/{userid}', ['as'=>'edit', 'uses'=>'UserController@postEdit']);  
    Route::post('profile/password/{userid}', ['as'=>updatepassword', 'uses'=>'UserController@updatePassword']);  
    

    对两个不同的控制器操作使用相同的路由是行不通的。我的意思是当表单 action='/profile/id' method='post' 时,您希望路由器如何确定要调用的控制器操作?因此,您需要区分路线。 希望你明白了。

    【讨论】:

    • 是的,我做了三个不同的路线,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2016-07-03
    • 2018-04-18
    • 1970-01-01
    • 2018-04-23
    • 2016-08-17
    相关资源
    最近更新 更多