#php #cakephp
#php #cakephp
Вопрос:
У меня в заголовке есть форма входа, которая взаимодействует с моим users_controller, но сама форма отсутствует в представлении, генерируемом контроллером пользователей, поэтому я получаю две проблемы
1.) Поле пароля не обрабатывается как поле пароля, а является обычным текстовым полем
2.) При отправке формы она просто перенаправляет на действие входа в систему
Вот код, и он используется как в представлении входа, так и в моем заголовке (поэтому я знаю, что это работает):
<?php echo $this->Form->create(null, array('id' => 'loginform', 'type' => 'post',
'url' => array('controller' => 'users', 'action' => 'login'))); ?>
<fieldset id="login">
<ul class="clearfix">
<li id="li-username">
<?php echo $this->Form->input('username', array('label'=>false,'placeholder'=>'Username or email address')); ?>
</li>
<li id="li-password">
<?php echo $this->Form->input('password', array('label'=>false,'placeholder'=>'Password')); ?>
<span id="iforgot"><?php echo $this->Html->link('?',
array('controller' => 'users', 'action' => 'forgotpassword'), array('title' => 'Forgot your password?')); ?></span>
</li>
<li id="li-submit">
<button type="submit" title="Log in">Log in amp;#9658;</button>
</li>
</ul>
</fieldset>
<?php echo $this->Form->end(); ?>
Комментарии:
1. jquery с ajax лучше всего подходит для выполнения этого.
Ответ №1:
Почему не меняется
Форма-> создать(null,…
Для
Форма-> создать(‘User’,…
в противном случае измените
Форма-> ввод(‘имя пользователя’,…
Для
Форма-> ввод(‘User.username’,…
Комментарии:
1. У меня возникла проблема, когда другие модели переопределяли форму входа в моем заголовке. выполнение Form-> input(‘User.username’) вместо Form-> input(‘username’) устранило мою проблему. Спасибо, что ведете меня в правильном направлении!
Ответ №2:
- Вы можете использовать type = ‘пароль’
echo $this->Form->input('password', array('label'=>false, 'type' => 'password', 'placeholder'=>'Password'));
- Вы указали массив (‘controller’ => ‘users’, ‘action’ => ‘login’) в вашем операторе $this-> Form-> create(). Таким образом, форма отправляется в «/ users/login»
Если вы не хотите отправлять форму в ‘/users /login’, вы можете использовать AJAX для выполнения входа.
Надеюсь, это ответит на ваши запросы.