Joomla 3.x,如果验证失败,如何保留用户数据

时间:2017-04-14 07:17:06

标签: php joomla

我在编写新的Joomla组件时遇到问题。 我的自定义joomla组件中有一些输入表单(/components\com_custom\views\myview\tmpl\default.php)

<input type="text" class="form-control" name="jform[checkindate]" id="checkindate" value="<?php if (isset($post)) {echo $post; } else { echo 'Checkin date'; }?>">

在课程中,顶部我有这个:

$jin = JFactory::getApplication()->input;
$post = $jin->get('checkindate', 'Checkin date', 'STR');

我的观点是,如果用户在验证过程中失败,请保留用户发布数据,这样他们就不需要重新输入所有表单,他们只需要修复一些错误数据才能再次提交,但是没有成功。 你能帮帮我吗? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我假设您使用Joomla jform构建表单

在jform中,如果要维护表单会话,某些事情需要注意。

  1. 将提交的表单数据存储在会话中 - 在验证之后将用户重定向到表单视图。您需要将用户数据存储在用户状态。这通常在控制器文件中完成。这通过以下方式完成

    $app = JFactory::getApplication(); $app->setUserState('componentname.formname.data', $data);

  2. 请注意,第一个参数是存储在用户状态的数据的密钥。第二个参数是用户的Jinput数据发布。

    1. 从会话中加载表单数据(如果可用) - 现在我们已经在会话中保存了数据,现在我们需要检查会话中是否有表单数据。这是在模型中编写的加载表单数据方法中完成的。
    2. `

      protected function loadFormData()
      
      {
          $data = JFactory::getApplication()->getUserState('componentname.formname.data', array());
      
          if (empty($data))
          {
              // This is the my component function to load form data
              $data = $this->getData();
          }
      
          return $data;
      }
      

      3。如果表单数据已成功保存,则不要忘记从会话中清除它。

      $app->setUserState('componentname.formname.data', null);