Joomla 3.x,如果验证失败如何保留用户数据
Joomla 3.x, how to keep user data if validation fail
我在编写新的 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');
我的观点是在用户 post 验证失败时保留他们的数据,这样他们就不需要重新输入所有表单,他们只需要在再次提交之前修复一些错误数据,但是没有成功。
你能帮我解决这个问题吗?
非常感谢!
我假设您正在使用 Joomla jform 构建表单
在 jform 中,如果要维护表单会话,需要注意某些事项。
将提交的表单数据存储在会话中 - 在验证后将用户重定向到表单视图之前。您需要将用户数据存储在用户状态中。这通常在控制器文件中完成。这是通过以下方式完成的
$app = JFactory::getApplication();
$app->setUserState('componentname.formname.data', $data);
请注意,第一个参数是存储在用户状态中的数据的键。第二个参数是用户输入的数据post
- 从会话中加载表单数据(如果可用)- 到目前为止,我们已经将数据保存在会话中,现在我们需要检查表单数据是否在会话中可用。这是在模型中编写的加载表单数据方法中完成的。
`
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);
我在编写新的 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');
我的观点是在用户 post 验证失败时保留他们的数据,这样他们就不需要重新输入所有表单,他们只需要在再次提交之前修复一些错误数据,但是没有成功。 你能帮我解决这个问题吗? 非常感谢!
我假设您正在使用 Joomla jform 构建表单
在 jform 中,如果要维护表单会话,需要注意某些事项。
将提交的表单数据存储在会话中 - 在验证后将用户重定向到表单视图之前。您需要将用户数据存储在用户状态中。这通常在控制器文件中完成。这是通过以下方式完成的
$app = JFactory::getApplication(); $app->setUserState('componentname.formname.data', $data);
请注意,第一个参数是存储在用户状态中的数据的键。第二个参数是用户输入的数据post
- 从会话中加载表单数据(如果可用)- 到目前为止,我们已经将数据保存在会话中,现在我们需要检查表单数据是否在会话中可用。这是在模型中编写的加载表单数据方法中完成的。
`
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);