只是想制作一个非常标准的用户编辑页面。 “密码”和“重新密码”开始隐藏,但可以通过单击“编辑密码”按钮将其打开。
但是 - 我不断收到来自安全组件的“auth”黑洞错误。
Per CakePHP 书 http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper%3a%3aunlockField,我尝试在视图中使用此解锁字段(在字段之前、字段之后、表单内部、表单之前和表单末尾尝试过:
$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>