如何在布局中使用其他控制器的操作?

时间:2014-08-20 21:21:09

标签: cakephp

我的布局default.ctp中有一个简单的表单,这是代码:

<li style="margin-top: 10px;">
                <?php echo $this->Form->create('User', array('action' => 'login')); ?>
                <?php echo $this->Form->input('email',array('label'=> false, 'class' => 'cnx', 'placeholder' => 'E-Mail', 'div' => false)); ?>
                <?php echo $this->Form->input('password',array('label'=> false, 'type'=> 'password', 'class' => 'cnx', 'placeholder' => 'Mot de passe', 'div' => false)); ?>
                <?php
                $options = array('label' => 'Connexion', 'class' => 'btncnx', 'div' => false);
                echo $this->Form->end($options);
                ?>
            </li>

我想从我的UsersController调用操作登录。唯一的问题是当我点击提交按钮时,CakePHP需要设置视图登录。我不想创建login.ctp视图......

缺少视图 错误:找不到UsersController :: login()的视图。

我的函数登录UsersController:

   public function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                return $this->redirect($this->Auth->redirect()); 
            }else{
                $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
            }
        }
    }

如何在不创建视图的情况下执行此操作?

由于

2 个答案:

答案 0 :(得分:1)

这闻起来很糟糕,但还行。在login()方法中尝试这个:

$this->render(null);

如果这不起作用,只需创建一个空的login.ctp。我没有看到这个问题。

其他最佳做法提示:

  • 不要使用内联CSS
  • 为什么要分配$ options然后将其设置为end()而不是直接传递数组?无用的变量声明和与他人的总和浪费了记忆。
  • Follow the CakePHP coding standard

答案 1 :(得分:0)

Try this code:
public function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                return $this->redirect($this->Auth->redirect()); 
            }else{
                $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
            }
        }
        $this->render('/Users/default');
    }

此处提供更多详细信息:http://book.cakephp.org/2.0/en/controllers.html