0

我在更新记录时遇到问题。我有一个用户可以注册的页面,它完美无缺,有 4 个字段:电子邮件、用户名、密码和确认密码。这是一个简单的注册页面,我不想通过提供很多要填写的东西来关闭访问者,比如全名和国家,所以这两个字段可以在他们的“更新个人资料”页面上更新。个人资料页面分为多个区域,主要区域是一个单一的表单,其中只有这 2 个字段可以更新,因此这里没有用户名、电子邮件、密码字段 - 只有全名和国家。

控制器更新配置文件代码

$user = User::find($id);

    $user->fullname = Input::get('fullname');
    $user->country = Input::get('country');


    if (!$user->save())
    {

        return Redirect::to('edit-profile')->withInput()->withErrors($user->errors());  

    } else {


        return Redirect::to('edit-profile')->withMessage('Profile successfully updated!');

    }       

我的用户模型规则。我正在使用 Ardent:

public static $rules = array(
  'username' => 'required|between:3,20|unique:users|alpha_dash',
  'email' => 'required|email|unique:users',
  'password' => 'required|min:5|confirmed',
  'password_confirmation' => 'min:5',
  'fullname' => 'between:5,50',
  'country' => 'between:3,50'
);

这里的问题是它返回一条错误消息,说“密码不匹配。”。因此,Laravel 似乎在查询中添加了密码字段,并且还尝试验证密码是否匹配。我不想为此创建单独的模型或单独的规则。我该如何解决这个问题?

4

1 回答 1

1

要在不显示密码时使其工作,您可以测试是否显示密码,然后在控制器中将其设为必填字段:

if ($user->exists){
    $user::$rules['password'] = (Input::get('password')) ? 'required|min:5|confirmed' : '';
    $user::$rules['password_confirmation'] = (Input::get('password')) ? 'required' : '';
}
$user->save();
于 2014-02-10T15:54:57.293 回答