2017-04-14 51 views
0

我在编写新的Joomla组件时遇到问题。 我有我的自定义组件的Joomla一些输入形式(/components\com_custom\views\myview\tmpl\default.php)Joomla 3.x,如果验证失败,如何保留用户数据

<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'); 

我的观点是如果用户发布的数据在验证中失败,那么他们不需要重新输入所有表单,他们只需要修复一些错误数据,然后他们就可以再次提交它,但没有成功。 你能帮我解决吗? 非常感谢!

回答

0

我假设你正在使用的Joomla jform建筑形成

在jform,某些事情需要,如果你想保持形式的会话照顾。

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

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

请注意,第一个参数是存储在用户状态数据的密钥来完成。第二个参数是用户输入的Jinput数据。

  • 从会话负载形式的数据(如果可用) - 截至目前,我们在会议上保存的数据,现在我们需要检查是否在会话中可用与否表单数据。这是在模型中写入的加载表单数据方法中完成的。
  • `

    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);

    +0

    这显示空数组 这里是我做的: $模式= $这个 - > getModel(); $ abc = $ model-> loadFormData(); var_dump($ abc); 在控制器: 保护功能loadFormData() { $数据= JFactory :: getApplication() - > getUserState( 'com_custom.custom.data',阵列()); (空($ data)) if(empty($ data)) { $ data = $ this-> getData(); } return $ data; } – Jason

    相关问题