CakePHP 2.2.3:如何将变量从一个表单传递到另一个表单

时间:2014-02-05 23:58:52

标签: php forms cakephp

我是CakePHP的新手,我尝试过搜索与我正在尝试做的相关的问题,但我认为没有被问过,所以这里是:< / p>

我正在为学校开发一个学生表格网站。学校有自己的特殊登录系统,他们希望用户能够使用而不是拥有自己独立登录系统的站点。因此,在我的User视图中,我的login.ctp文件从login()调用了UserController,登录功能成功连接到学校的登录系统并验证了用户凭据(用户名和密码存储在$user_name$user_pass中)。

然后我通过检查User模型用于登录学校系统的用户名来检查这是否是用户首次登录时的登录功能。如果用户名不存在,则表单会重定向到register.ctp(仍为User视图),用户需要填写其名字,姓氏和其他一些存储在{{{ 1}}模型。我还需要这个注册表来存储用于登录学校系统的用户名和密码。用户注册后应重定向到User视图并使用Student/forms

如何在此新表单中访问StudentController$user_name?我不希望用户能够输入此信息(它应该放在只读输入框中)。

我应该在$user_pass中创建一个函数register()来创建一个新的UserController来添加到数据库吗?

很抱歉,如果之前已经涵盖了这一点!

这是我的代码的一个伪示例:

User

我收到错误,说$ data是一个未定义的变量,虽然在寄存器函数中,即使我在重定向中传递它。我该怎么做呢?

登录视图:

UserController:
login(){
   $user_name = $_POST['username'];
   $user_pass = $_POST['pwd'];
   $data = array('username' => $user_name, 'pwd' => $user_pass);

   if(validate($user_name, $user_pass)){
      if(!exists($user_name)){
         $this->redirect(array('action' => 'register', $data));//Passing the log in data to the register function and view
      } else {$this->redirect(array('controller' => 'forms', 'action' => 'students'));}
   } else {//display invalid credential message}
}

register(){
   AppController::loadModels(array('User'));
   $this->set($data);//Setting the data passed by login() so the register.ctp view can use it
   //grab post data from registration form
}

注册视图:

<div class="main-content">
    <div class="hero-unit span5 centerIt">
        <?php echo $this->Session->flash(); ?>
        <?php echo $this->Session->flash('auth'); ?>
        <?php echo $this->Form->create('User', array('action'=>'login')); ?>
        <fieldset id="login">
            <h2> User Login</h2>
            <p> Please Enter your [sic] Credentials </p>
            <p>
                <?php echo $this->Form->input('username', array('label' => 'Username: ', 'type' => 'text', 'value' =>'')); ?>
            </p>
            <p>
                <?php echo $this->Form->input('password', array('label' => 'Password: ', 'type' => 'password')); ?>
            </p>
            <p>
                <?php echo $this->Form->input('remember', array('type'=>'checkbox', 'label'=>'Remember me')); ?>
            </p>
        </fieldset>
        <div class="submit pull-right">
            <input type="submit" value="Login" class="btn btn-primary">
        </div>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

按照编写方法的方式处理登录方法不是一个好习惯。 follow this article for login

使用提交按钮结束表单不是一个好习惯。做完之后

<?php echo $this->Form->end(__('submit')); ?>


//login method
public function login() {
     $user = $this->User->findByUsername($this->request->data['User']['username']);
     if(empty($user)){
            $this->request->data = $this->User->read(null, $user['User'][''id]);
            $this->redirect method...
     }
}