UnlockField не работает в CakePHP

Просто пытаюсь сделать довольно стандартную страницу редактирования пользователя. «Пароль» и «повторный пароль» сначала скрыты, но их можно включить, нажав кнопку «Редактировать пароль».

Но я продолжаю получать ошибку черной дыры «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>

person Dave    schedule 28.04.2014    source источник
comment
где вы можете решить это случайно?   -  person Amjo    schedule 05.07.2019


Ответы (1)


Попробуйте этот синтаксис:

$this->Security->unlockedFields = array('yourfield');
person Geremy Turcotte    schedule 29.04.2014