joomla会话对象什么都不返回

时间:2012-12-21 08:54:40

标签: php joomla

我有一个名称字段如下的表单

<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("&amp;", "&",$redirectTo), 'Saved');
      }
      else {                          
         $redirectTo = JRoute::_('index.php?option='.JRequest::getVar('option').'&Itemid='.JRequest::getVar('Itemid'));
         $this->setRedirect(str_replace("&amp;", "&",$redirectTo), "The form is not complete!" );                 
       }    

    }

然后再次在我的表单页面上,我试图获得会话对象错误名称的值,如下所示:

$session =& JFactory::getSession(); 
$session->get('errorname');

我这样做仅仅是为了测试目的;因此,当我提交表单而不填写字段时,会话对象应该返回错误(消息 请输入您的姓名! )。但我想知道为什么没有回来。

我不确定我是否遗漏了什么,请指教我!

1 个答案:

答案 0 :(得分:0)

这可能是由于你的if条件真实部分没有被执行的原因。

if(!$name || strlen($name = trim($name)) == 0){
         echo 'works';die;
      }

替换上面的代码并检查是否进入if条件true部分。除此之外,你正在做的一切正确。如果正在评估if条件,则由于使用die;命令,右页将停止执行。这是确保代码没有错误的好方法。

Read this link。它将为您提供JFactory::getSession()

的一些用法