2017-04-14 59 views
0

我在編寫新的Joomla組件時遇到問題。 我有我的自定義組件的Joomla一些輸入形式(/components\com_custom\views\myview\tmpl\default.php)Joomla 3.x,如果驗證失敗,如何保留用戶數據

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

我的觀點是如果用戶發佈的數據在驗證中失敗,那麼他們不需要重新輸入所有表單,他們只需要修復一些錯誤數據,然後他們就可以再次提交它,但沒有成功。 你能幫我解決嗎? 非常感謝!

回答

0

我假設你正在使用的Joomla jform建築形成

在jform,某些事情需要,如果你想保持形式的會話照顧。

  1. 將提交的表單數據存儲在會話中 - 在將用戶重定向到驗證後的表單視圖之前。您需要將用戶數據存儲在用戶狀態中。這通常在控制器文件中完成。這通過下面的方式

    $app = JFactory::getApplication(); $app->setUserState('componentname.formname.data', $data);

請注意,第一個參數是存儲在用戶狀態數據的密鑰來完成。第二個參數是用戶輸入的Jinput數據。

  • 從會話負載形式的數據(如果可用) - 截至目前,我們在會議上保存的數據,現在我們需要檢查是否在會話中可用與否表單數據。這是在模型中寫入的加載表單數據方法中完成的。
  • `

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

    +0

    這顯示空數組 這裏是我做的: $模式= $這個 - > getModel(); $ abc = $ model-> loadFormData(); var_dump($ abc); 在控制器: 保護功能loadFormData() { $數據= JFactory :: getApplication() - > getUserState( 'com_custom.custom.data',陣列()); (空($ data)) if(empty($ data)) { $ data = $ this-> getData(); } return $ data; } – Jason

    相關問題