【问题标题】:Joomla 3.x, how to keep user data if validation failJoomla 3.x,如果验证失败,如何保留用户数据
【发布时间】:2017-04-14 07:17:05
【问题描述】:

我在编写新的 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');

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

【问题讨论】:

    标签: php joomla


    【解决方案1】:

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

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

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

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

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

    1. 从会话中加载表单数据(如果可用) - 到目前为止,我们已经将数据保存在会话中,现在我们需要检查表单数据在会话中是否可用。这是在模型中写入的加载表单数据方法中完成的。

    `

    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-&gt;setUserState('componentname.formname.data', null);

    【讨论】:

    • 它显示一个空数组这是我所做的: $model = $this->getModel(); $abc = $model->loadFormData(); var_dump($abc);在控制器中:受保护的函数 loadFormData() { $data = JFactory::getApplication()->getUserState('com_custom.custom.data', array()); if (empty($data)) { $data = $this->getData(); } 返回$数据; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2016-05-21
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多