我目前有一個zend框架應用程序與多個模塊。每個模塊應使用相同的Zend_Form_Decorator_ViewScript,位於default
模塊/views/scripts
文件夾中。Zend框架表單,子表單和裝飾器
沒有任何變化,在默認情況下模塊只追求形式裝飾viewscripts位於每個模塊下自己/views/scripts
文件夾,因此讓他們從default
模塊文件夾中加載它們,我首先需要在表單中應用此:
$view = new Zend_View();
$view->setScriptPath(APPLICATION_PATH . '/views/scripts');
$this->setView($view);
在同樣的表格中,我創建了多個Zend_Form_SubForm
s,爲此我需要再次應用相同的代碼。如果這還不夠,我需要將該路徑應用於每個子表單中的每個單獨元素以及父表單。此外,每一個元素都必須有ViewScript像每次定義:
$username->setDecorators(array(array('ViewScript', array('viewScript' => '/formScripts/wizardElement.phtml'))));
現在,所有的工作,如果我定義所有的,對於同一個文件中的每個元素/子窗體/形式,但它只是似乎這麼多不必要的工作/代碼。
- 能過程可以通過只具有父形式限定 的
scriptPath
本身首先簡化 ,其 元件,其子表單,並且 子表單元素? - 根據元素的類型(即輸入框,複選框,選擇框,文本區,按鈕等),可以自動創建的新元素是否爲其定義了特定的
ViewScripts
?
我目前直接從默認Zend_Form
延長我的形式,我不會創建自己的抽象的形式來擴展從我的形式的一個問題,尤其是與scriptPath
的問題,我不完全知道如何我應該處理這個問題。
應用:
$this->setSubFormDecorators(array(
'Form',
array('ViewScript', array('viewScript' => '/formScripts/wizardSubForm.phtml'))
));
覆蓋所有我之前已經申請的元素特定的裝飾。
對此提出建議?
您是否嘗試過使用setElementDecorators來將裝飾器設置爲之前添加的所有元素? – max4ever 2011-06-17 08:03:08