0

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

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

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

我不确定我是否遗漏了什么,请给我建议!

4

1 回答 1

0

这可能是由于您的 if 条件为 true 部分没有被执行。

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

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

阅读此链接。它会给你一些用法JFactory::getSession()

于 2012-12-21T09:10:16.350 回答