蛋糕 PHP 窗体外部控制器


CakePHP Form outside controller

我的标头中有一个与我的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 &#9658;</button>
        </li>
    </ul>
</fieldset>
<?php echo $this->Form->end(); ?>

为什么不改变

表单>创建(空,...

Form->create('User',...

否则更改

表单>输入("用户名",...

Form->input('User.username',...

  1. 您可以使用类型 = "密码"


echo $this->Form->input('password', array('label'=>false, 'type' => 'password', 'placeholder'=>'Password')); 
  1. 您已在 $this->Form->create() 语句中指定了 array('controller' => 'users', 'action' => 'login')。所以表单被提交到"/用户/登录"

如果您不想将表单提交到"/users/login",则可以使用 AJAX 执行登录。

希望这些能回答您的疑问。