CakePHP中的多个控制器

时间:2009-06-08 09:28:19

标签: cakephp controller

我是cakephp的新手......       我正在使用CakePhp和Mysql开发一个应用程序。       在Cakephp我有两个表,一个是Form(id,name,created,modified)和attributes(id,Attribute-name,form_id,value)     我只保留了一个控制器中的所有控件。在这个formctrller中,我有登录,注册,视图等操作...

 Do i need to create a separate controller for login and register..If so Actually i will run in my system with http://localhost/cake/forms where i am having the place to register and login ...If i had separate controller,then how can i make that to switch from forms to login controller on login....Explain me...

修改

<?php
 class UsersController extends AppController 
{
 var $name = 'Users';
var $helpers=array('Html','Ajax','Javascript','Form');
 var $components = array( 'RequestHandler','Email');
 var $uses=array('Form','User','Attribute');
//Function for login 
function login()
   {
    $email_id=$this->data['User']['email_id'];
        $password=$this->data['User']['password'];
    $login=$this->User->find('all');
    $this->set('Forms',$this->Form->find('all'));
    foreach($login as $form):
        if($email_id==$form['User']['email_id'] && $password==$form['User']['password'])
        {
            $this->Session->setFlash('Login Successful');
                            // $this->render('forms/homepage');
            $this->redirect('/forms/homepage');


            break;
        }
        else
        {
            $this->Session->setFlash('Login UnSuccessful');
            //$this->redirect('/forms/index');
        }
    endforeach;


}

//Function to register the user into Users Table.
function register()
{
           $this->set('Forms',$this->Form->find('all'));
    if (!empty($this->data)) 
    {
        if ($this->User->save($this->data)) 
        {
            $this->Session->setFlash('You have been registered.');
            $this->set('register', $this->Form->find('all'));
                            //$this->render('homepage');
            $this->redirect('/forms/homepage');
        }
    }
}

}

Ya现在我使用两个控制器一个用户,一个用于表格。 但是一个疑问。我已经运行了上述代码。实际上在我的/forms/index.ctp

      <?php
     echo $javascript->link('prototype.js');
     echo $javascript->link('scriptaculous.js');
    echo $html->css('main.css');
   ?>

   

formBuildr

  

 

注册

          <?php
           echo $form->create('User',array('action'=>'register'));
           echo $form->input('User.name');
          echo $form->input('User.email_id');
          echo $form->input('User.password');
           echo $form->end('Register');
          ?>
   </div>

     <div id="login">
    <h3>Login</h3>
        <?php
                echo $form->create('User',array('action'=>'login'));
                echo $form->input('User.email_id');
                echo $form->input('User.password');
                echo $form->end('Login');
         ?>
      </div>

我已经注册并登录..它去/表格/主页但事情是那个..它没有显示我的Flash消息(登录成功/不成功)我尝试使用渲染选项,但甚至向我显示错误.. 注意:因为我不需要在我的views / users / login.ctp中有任何东西我没有login.ctp ..(自从我登录并直接移动到我的FORMSCONTROLLER的主页。

1 个答案:

答案 0 :(得分:4)

你显然没有完成你的作业。我建议你阅读Cake的官方Cookbook

回答你的问题。如果你想处理登录和用户注册,你应该

  1. 创建一个名为users(id,username,password)
  2. 的新表
  3. class User extends AppModel设为app/models/user.php
  4. class UsersController extends AppController设为app/controllers/users_controller.php
  5. 您应该将login()register()放入UsersController
  6. 现在,要将切换从一个控制器切换到另一个控制器,您需要提供超链接。

    <a href="/cake/users">Users</a>
    <a href="/cake/forms">Manage your forms</a>
    

    或者,更多的Cake-ish方法

    <?php echo $html->link("Users", '/users');?>
    <?php echo $html->link("Manage your forms", '/forms');?>
    

    严重的是,如果您有其他问题,建议您RTFM

    编辑:如果从/forms提交HTML表单到/users,则没有自动重定向。因此,如果您希望重定向用户,则需要执行此操作

    <?php 
    
    class UsersController extends AppController
    {
        function login()
        {
            if(!empty($this->data))
            {
                // Process $_POST
    
                // Finally redirect the user back to forms
                $this->redirect('/forms');
            }
        }
    }
    
    ?>