以下のような名前フィールドを持つフォームがあります
<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');
これはテスト目的のためだけに行っています。そのため、フィールドに入力せずにフォームを送信すると、セッション オブジェクトはエラーを返すはずです (メッセージPlease enter your name! )。しかし、なぜ何も返されないのだろうか。
何かが足りないかどうかわからないので、アドバイスをお願いします!