0

我是 cakephp 的新手。为了安全更新,我要求用户输入他的出生日期。如果他输入了正确的出生日期,我想向他展示另一个表格,其中包含他的安全问题,然后是他的密码。

有两种不同的形式。一种是安全检查(出生日期验证),另一种是设置安全(安全问题+密码)。

如果设置了安全,则首先显示安全检查表并要求输入他的出生日期。如果出生日期正确,则应显示设置的安全表,我无法这样做。

我的个人资料页面代码显示了这两种形式;

<?php if($_GET['edit'] == 'set_security'){ ?>
        <?php if (empty($security_set)): ?>
        <?= $this->element('../users/set_security') ?>
        <?php else:?>
         <?= $this->element('../users/set_security_check') ?>
        <?php endif; ?>
        <?php } ?>

我在控制器中编写的功能是,

function set_security_check()
{
   $user = $this->_authenticate_user();
   $id = $user['account_num'];
   $this->loadModel('UserProfile');
   $user_profile = $this->UserProfile->read(null, $id);
   $oldBirthdate = $user_profile['UserProfile']['birthday']; 
     if (!empty($this->data)) {
         $birthday = $this->data['UserProfile']['birthday'];
         if($oldBirthdate != $birthday)
         {
           $this->flashMessage(__('Your Birthday is Invalid. Please, try again.', true));

         }
         else
         {
          $this->flashMessage(__('Your Birthday Verified successfully', true), 'Sucmessage');
          $this->set('success', true);
         }

     }


}

当用户单击安全编辑按钮时,我正在发送查询字符串 /profile?edit=set_security。

输入正确的出生日期后如何显示其他表格?

4

1 回答 1

1

您可以在满足条件的控制器中使用以下代码简单地显示任何其他表单:

$this->render('/users/other_form');

如果我是正确的,那么您的代码应如下所示:

function set_security_check()
{
  $user = $this->_authenticate_user();
  $id = $user['account_num'];
  $this->loadModel('UserProfile');
  $user_profile = $this->UserProfile->read(null, $id);
  $oldBirthdate = $user_profile['UserProfile']['birthday']; 
  if (!empty($this->data)) {
     $birthday = $this->data['UserProfile']['birthday'];
     if($oldBirthdate != $birthday)
     {
       $this->flashMessage(__('Your Birthday is Invalid. Please, try again.', true));

     }
     else
     {
      $this->flashMessage(__('Your Birthday Verified successfully', true), 'Sucmessage');
      $this->set('success', true);
      $this->render('/controller_name/other_form');
     }
  }
}
于 2013-07-08T06:33:46.413 回答