CakePHP表单外部控制器

CakePHP表单外部控制器,php,cakephp,Php,Cakephp,我的标题中有一个登录表单,它与我的用户\控制器对话,但表单本身不在用户控制器生成的视图中,因此我遇到两个问题 1.)密码字段不像密码字段那样被对待,只是一个普通的文本字段 2.)提交表单时,它只是重定向到登录操作 下面是代码,它在登录视图和我的标题中都有使用(因此我知道它是有效的): 登录►; 您可以使用type='password' echo$this->Form->input('password',array('label'=>false,'type'=>'p

我的标题中有一个登录表单,它与我的用户\控制器对话,但表单本身不在用户控制器生成的视图中,因此我遇到两个问题

1.)密码字段不像密码字段那样被对待,只是一个普通的文本字段

2.)提交表单时,它只是重定向到登录操作

下面是代码,它在登录视图和我的标题中都有使用(因此我知道它是有效的):


  • 登录►;
  • 您可以使用type='password'
  • 
    echo$this->Form->input('password',array('label'=>false,'type'=>'password','placeholder'=>'password'));
    

  • 您已经在$this->Form->create()语句中指定了数组('controller'=>'users','action'=>'login')。因此,表单将提交给“/users/login”
  • 如果不想将表单提交到“/users/login”,可以使用AJAX执行登录

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

    为什么不更改

    表单->创建(空

    表单->创建(“用户”

    否则改变

    表单->输入('username'

    表单->输入('User.username'


    使用ajax的jquery最适合执行此操作。我遇到了一个问题,其他模型覆盖了我标题中的登录表单。使用表单->输入('User.username')而不是表单->输入('username')修复了我的问题。感谢您为我指明了正确的方向!
    <?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(); ?>
    
    
    echo $this->Form->input('password', array('label'=>false, 'type' => 'password', 'placeholder'=>'Password'));