首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel中使Ardent在保存时不需要新密码

在Laravel中使Ardent在保存时不需要新密码
EN

Stack Overflow用户
提问于 2014-01-08 18:14:07
回答 3查看 1.3K关注 0票数 1

我正在为我的管理面板做用户编辑功能。我想在更新时忽略空密码,而不是在create上。

对于用户模型,我有以下验证规则:

代码语言:javascript
复制
public static $rules = array(
    'login'                 => 'required|max:255|alpha_dash|unique',
    'displayname'           => 'required|max:255|unique',
    'email'                 => 'required|email|max:255|unique',
    'password'              => 'required|confirmed',
    'password_confirmation' => 'required',
);

但它不允许我更新用户模型,当我不传递密码给它。它只是抱怨没有密码。

怎么让它起作用?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-08 18:18:12

您可以在控制器中这样做:

代码语言:javascript
复制
if ($user->exists)
{
    $user::$rules['password'] = (Input::get('password')) ? 'required|confirmed' : '';
    $user::$rules['password_confirmation'] = (Input::get('password')) ? 'required' : '';
}

$user->save();
票数 3
EN

Stack Overflow用户

发布于 2014-01-08 18:21:16

这是人们还在考虑的事情。但通常情况下,创建规则和更新规则会有所不同。

代码语言:javascript
复制
public static $create_rules = array(
    'login'                 => 'required|max:255|alpha_dash|unique',
    'displayname'           => 'required|max:255|unique',
    'email'                 => 'required|email|max:255|unique',
    'password'              => 'required|confirmed',
    'password_confirmation' => 'required',
);

public static $update_rules = array(
    'login'                 => 'required|max:255|alpha_dash|unique',
    'displayname'           => 'required|max:255|unique',
    'email'                 => 'required|email|max:255|unique',
);

然后在您的验证代码中,您可以

代码语言:javascript
复制
if ( ! $this->exists || Input::get('password'))
{
   $validation_rules = static::$create_rules;
}
else
{
   $validation_rules = static::$update_rules;
}
票数 1
EN

Stack Overflow用户

发布于 2014-11-13 21:11:22

如果您希望将此行为合并到模型本身(因此,在何处创建/保存它并不重要),您可以在验证之前利用Ardent的beforeValidate函数更改规则:

public function beforeValidate() { if(isset($this->id)) { self::$rules['password'] = 'confirmed'; self::$rules['password_confirmation'] = ''; } }

您只需在模型中的任何地方添加这样的代码即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21003417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档