Laravel显示错误

时间:2016-07-27 21:50:44

标签: php laravel blade

当我想在同一页面上显示多个表单时显示验证错误时,我遇到了一些问题。

如下所示,我在同一页面上有两种表格(一般和密码)。

|        | GET|HEAD | profile/edit/settings          |      | App\Http\Controllers\ProfileController@getEditSettings  | web,auth   |
|        | POST     | profile/edit/settings/general  |      | App\Http\Controllers\ProfileController@postEditSettings | web,auth   |
|        | POST     | profile/edit/settings/password |      | App\Http\Controllers\ProfileController@postEditPassword | web,auth   |

每个表单都有一个隐藏的输入字段,如下所示: <input type="hidden" name="password2" value="1"> 在视图的底部,我得到了这个:

@if (!empty(old('password2')))
        @include('errors.common')
@endif

这样我就不会在两个表单上显示相同的错误。 但是没有任何错误显示出来。

如果我dd(old('password2'))我得到null

在我的ProfileController中,我有这个方法:

/**
 * @return mixed
 * Processing new password
 */
public function postEditPassword() {

    // Grab signed user
    $user = Auth::user();

    // Change password
    $user -> changePassword(Input::all());

}

如上所示,我尝试使用User模型中的自定义方法更改密码,如下所示:

public function changePassword($data) {

    // The signed user
    $user = Auth::user();

    // Try to match the old password
    if (!Hash::check($data['old_password'], $user -> password)) {
        return redirect() -> back() -> with('error', 'Det gamle passordet stemmer ikke.');
    }

    // Validate the new password
    $validator = Validator::make([
        'password' => $data['password'],
        'password_confirm' => $data['password_confirm']
    ], [
        'password' => 'required|min:6',
        'password_confirm' => 'required|min:6|same:password'
    ]);

    if ($validator -> fails()) {
        return redirect() -> back() -> withErrors($validator);
    }

    // Change the password
    $user -> password = bcrypt($data['password']);
    $user -> save();

    return redirect() -> back() -> with('success', 'Passordet ble endret!');

}

此外,除了错误视图问题之外,我想知道这是否是一种处理不同形式的好方法(在控制器中获取数据,发送到模型进行处理,然后模型将重定向)。

0 个答案:

没有答案