我有一个名称字段如下的表单
<label class="control-label" for="name">Your Name *</label>
<div class="controls">
<input type="text" class="input-xlarge" name="name" id="name" maxlength="10">
</div>
在表单提交上,我正在尝试验证(服务器端)我的控制器中的字段,如下所示:
function save(){
$name = JRequest::getVar('name', 'POST');
$session =& JFactory::getSession();
if(!$name || strlen($name = trim($name)) == 0){
$session->set('errorname', 'Please enter your name!');
$error= true;
}
$session->set('valuename', $name);
if(!$error){
$model = & $this->getModel('jobs');
$model->saveJob(JRequest::get('POST'));
$redirectTo = JRoute::_('index.php?option='.JRequest::getVar('option').'&task=display');
$this->setRedirect(str_replace("&", "&",$redirectTo), 'Saved');
}
else {
$redirectTo = JRoute::_('index.php?option='.JRequest::getVar('option').'&Itemid='.JRequest::getVar('Itemid'));
$this->setRedirect(str_replace("&", "&",$redirectTo), "The form is not complete!" );
}
}
然后再次在我的表单页面上,我试图获得会话对象错误名称的值,如下所示:
$session =& JFactory::getSession();
$session->get('errorname');
我这样做仅仅是为了测试目的;因此,当我提交表单而不填写字段时,会话对象应该返回错误(消息 请输入您的姓名! )。但我想知道为什么没有回来。
我不确定我是否遗漏了什么,请指教我!
答案 0 :(得分:0)
这可能是由于你的if条件真实部分没有被执行的原因。
if(!$name || strlen($name = trim($name)) == 0){
echo 'works';die;
}
替换上面的代码并检查是否进入if条件true部分。除此之外,你正在做的一切正确。如果正在评估if条件,则由于使用die;
命令,右页将停止执行。这是确保代码没有错误的好方法。
Read this link。它将为您提供JFactory::getSession()