CakePHP中的UnlockField无法正常工作

3

我只是想创建一个标准的用户编辑页面。"密码"和"重新输入密码"一开始是隐藏的,但可以通过点击"编辑密码"按钮来显示。

然而,我一直收到安全组件的"auth"黑洞错误。

根据CakePHP手册,我在视图中尝试使用以下代码解锁字段(在字段之前、之后、表单内部、表单之前和表单结尾都试过):

$this->Form->unlockField('User.password');
$this->Form->unlockField('User.re-password');

但是这并没有帮助。我唯一让它工作的方法是完全解锁整个操作(似乎不是理想的方法):

$this->Security->unlockedActions = array('admin_edit');

如果我不禁用这些字段,那么它会正常工作,但是我需要禁用它们,因为如果不禁用,内置的“notEmpty”属性在查找这些字段时会导致javascript错误。
视图/HTML:
<div id="edit-password-area" style="display:none;">
    <div class="form-group">
        <label>Password</label>
        <?php echo $this->Form->input('User.password', array('class'=>'input-xxlarge form-control', 'value'=>'', 'disabled'=>'disabled')); ?>
        <p class="note">Must be at least 8 characters in length.</p>
    </div>
    <div class="form-group">
        <label>Verify Password</label>
        <?php echo $this->Form->input('User.re_password', array('type'=>'password', 'class'=>'input-xxlarge form-control', 'value'=>'', 'disabled'=>'disabled')); ?>
        <p class="note">Must exactly match the "Password".</p>
    </div>
</div>

<div id="edit-password-button-area">
    <a href="javascript:showPasswordArea();">Edit Password</a>
</div>

<div id="dont-edit-password-button-area" style="display:none;">
    <a href="javascript:hidePasswordArea();">Don't Edit Password</a>
</div>

Javascript:

<script>
function showPasswordArea() {
    $('#edit-password-area').show();
    $('#edit-password-area input').removeAttr('disabled');
    $('#dont-edit-password-button-area').show();
    $('#edit-password-button-area').hide();
    $('#UserPassword').focus();
}
function hidePasswordArea() {
    $('#edit-password-area').hide();
    $('#edit-password-area input').prop('disabled', 'disabled');
    $('#dont-edit-password-button-area').hide();
    $('#edit-password-button-area').show();
}
</script>

你能否碰巧解决这个问题? - Amjo
1个回答

0

尝试这个语法:

$this->Security->unlockedFields = array('yourfield');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接