2012-02-02 15 views
1

我有一個表單提交時顯示錯誤字段時使用displayFieldError。我需要在某些錯誤條件下顯示/隱藏一個容器,是否可以鏈接一個js動作?在表單上鍊接一個js動作displayFieldError

+0

什麼樣的容器?嘗試調用'$ this-> downCall('loadPOST'); $這 - >下行調用( '驗證');'。然後你可以弄亂'$ form-> errors'。您也可以使用Form_Basic :: submit的副本完全重新定義submit(),然後按照您喜歡的方式調整它。 – romaninsh 2012-02-03 01:01:51

+0

問題不在於容器,而在於'displayFieldError'。 它在內部執行這樣的事情:$ f-> js() - > atk4_form('fieldError',$ field-> short_name,$ message) - > execute();'不可能將其他js動作添加到它沒有重新實現所有的方法... – 2012-02-03 08:07:38

回答

1

擴展和重新定義方法是面向對象開發中的常規實踐。此外,你可以做到這一點在全球範圍創造這樣的:

​​

這將在您的項目並不會丟失任何功能。

0

Agile Toolkit中的所有視圖都帶有一個jquery類,並且能夠調用jquery並且也是可鏈接的。

BUT延伸的視圖類必須執行其HTML模板的ID = NAME屬性的對象。

這裏有一個觀點,這將不會隱藏文本對象的例子:

$t=$this->add('Text')->set('Press Buton To Hide Me'); 
$b=$this->add('Button'); 
$b->js('click', 
    $t->js()->hide() // hide it 
    )->univ()->successMessage('Hiding Text..'); // js chained 

其清晰的文本對象具有JavaScript的能力,但不會對自身工作,即使附加click命令將不起作用。

這裏有一個觀點的另一個例子,一個擴展的HtmlElement類WILL得到隱藏:

$t=$this->add('P')->set('Press Buton To Hide Me'); 
$b=$this->add('Button'); 
$b->js('click', 
    $t->js()->hide() // hide it 
    )->univ()->successMessage('Hiding Text..'); // js chained 

檢查兩個來源,你會立即看到其中的差別。

因此,請確保您所指的容器是View類的擴展類及其關聯的Template在其中具有id="<?$_name?>"實現。

我不確定任何其他更簡單的方法。

+0

也,你可能想檢查我的答案: [SO-ATK4-Q&A](http://stackoverflow.com/questions/8704789/agile-toolkit-crud-works-完成on-localhost-throws-error-on-server/8767117#8767117) 注意到'beforeModify()'函數實現了fieldError的js()版本以及適當的鏈式附加js調用它。 – 2012-02-03 04:15:39

+0

我沒有問題的容器(它有id),但我問是否有一種方法來添加js錯誤處理,而不重新實現'displayFieldError'方法。 – 2012-02-03 08:10:59