2014-02-12 57 views
0

我有所需在某些情況下,而不是在別人,所以我已經改變了所需的屬性在編輯視圖文件中的飛行與setFieldAttribute功能域的表單:的Joomla表單字段需要,即使需要屬性更改爲false

if (_condition_) { 
    $this->form->setFieldAttribute('transprice', 'required', 'false'); 
} 

這個工作,並反映在html輸出。

然而,當我嘗試保存我仍然得到形式:

警告

必填字段:轉讓價格

有沒有別的東西,我需要考慮獲得這工作?

+0

你必須改變XML格式了。 –

+0

@JobinJose你是指實際的文件?如果是這樣,那麼這將不起作用,因爲我需要能夠根據特定條件來改變它。 – doovers

回答

3

沒有看到所有的代碼很難回答這個問題,但我們最好的選擇是使用JavaScript來設置和取消這一領域的必要組成部分。如果您使用的是使用Validation.js的表單,那麼您可以通過javascript在頁面上動態設置requrired類。

只要回答短: 1)保持在XML它未要求。因爲如果你使用的是JForm,那麼無論你設置了什麼,JForm都會依賴它。

2)動態地設置所需的類,從而validation.js可以參考一下,看看是否應該被要求或不形式。這只是一個客戶端驗證。

3)對於服務器端驗證,你需要重寫的數據模型和控制器來確定(再次)如果該字段應該根據其他動態數據是必需的。

瞭解更多關於在這裏:​​http://docs.joomla.org/Form_field#Client-side_validation

+0

感謝您的回覆!我希望這將是一個比這更簡單的解決方案,但我必須說,我很驚訝,Joomla總是回到xml ......對於(至少對我而言)它沒有任何意義在表單實例進行驗證。 – doovers

+0

使用JForm,它將依賴於XML,因爲XML可以讓您免於親自手寫模型。它引用XML來排列所有內容,如表單名稱,數據庫中的列名稱,所需的狀態等等......當將JForm加載到模型中時,您會注意到它直接引用XML文件型號: JForm: https://github.com/joomla/joomla-cms/blob/staging/components/com_contact/models/forms/contact.xml 型號: https://github.com/ joomla/joomla-cms/blob/staging/components/com_contact/models/contact.php#L73 –

+0

是的,我認爲是這樣。我認爲我唯一的選擇是重寫模型和控制器,或者更好地創建自定義驗證規則。 – doovers