【问题标题】:Kohana Change Password Error ORM DriverKohana 更改密码错误 ORM 驱动程序
【发布时间】:2012-05-04 20:35:48
【问题描述】:

好的,所以我尝试允许用户使用此代码通过管理面板更改密码,但我不断收到

ORM_Validation_Exception [ 0 ]: 验证数组失败 ~ MODPATH/orm/classes/kohana/orm.php [1174]

有人有解决办法吗?这里分别是控制器函数和模型函数和视图

控制器:

public function action_edituser() {
    $this->auto_render = false;

    $edit = Model::factory('manageusers');

    $post = $_POST;

    $edit->editUser($post);
}

型号:

public function editUser($array) {
    try {
        $user = ORM::factory('user')
                ->where('id', '=', $array['id'])
                ->find()
                ->update_user($array, array(
            'username',
            'password',
            'email',
                ));
        return $this->response('success', 'User Edited');
    } catch (Database_Exception $e) {
        $this->response('error', $e->getMessage());
    }
}

查看:

<div class="modal" id="editmodal" style="display: none;">
    <div class="modal-header">
        <a class="close" data-dismiss="modal">×</a>
        <h3>Edit User</h3>
    </div>
    <div class="modal-body">
        <?php
        echo Form::open('admin/manageusers/edituser', array('data-function'=> '/admin/manageusers/updategrid', 'data-element' => 'tbody'));

        echo Form::label('username', 'Username');
        echo Form::input('username', null, array('id' => 'username'));

        echo Form::label('email', 'Email');
        echo Form::input('email', null, array('id' => 'email'));

        echo HTML::anchor('#', 'Change Password', array('id' => 'changepass', 'style' => 'display: block;'));
        echo '<div id="passwordchange" style="display: none;">';

        echo Form::label('password', 'Password');
        echo Form::password('password', null, array('id'  => 'password'));

        echo Form::label('password_confirm', 'Confirm Password');
        echo Form::password('password_confirm');
        echo '</div>';
        echo Form::hidden('id', null, array('id' => 'id'));
        ?>
    </div>
    <div class="modal-footer">
        <a href="#" class="btn" data-dismiss="modal">Close</a>
        <input type="submit" class="btn btn-success" value="Save changes" />
    </div>
    <?php echo Form::close(); ?>
</div>

【问题讨论】:

  • 你确定给定 id 的用户存在吗?
  • 查看application/classes/model/user.php 以了解验证规则。您的错误 - 是验证错误,ORM 输入数据与验证规则不匹配。

标签: php kohana kohana-orm kohana-auth


【解决方案1】:

问题是存在验证错误,这意味着您的输入与模型的规则不匹配。

您需要捕获ORM_Validation_Exceptions,并找出导致错误的原因。

public function editUser($array) {
    try {
        ...
    } catch (Database_Exception $e) {
        ...
    } catch (ORM_Validation_Exception $e) {
        var_dump($e->errors());
    }
}

【讨论】:

  • 奇怪的是,当我更改它以捕获 ORM_Validation_Exception 它开始工作时......谢谢
  • 你需要捕获所有异常(加上一个额外的catch(Exception $e) {...})。
猜你喜欢
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 2021-09-20
  • 2019-11-10
  • 2013-10-24
相关资源
最近更新 更多