我創建了一些東西來抽象我的小框架中的表單創作。
基本上我有兩個主要的類。元素類和element_container類。
我的大多數元素都擴展了元素類,除了表單,fieldset,div等(包含其他元素的元素),它們擴展了element_container類。
這是我簡單的輸入級:
class acs_form_input extends acs_element {
public function __construct($name) {
//These propertie is declared in the parent class
//By default the type is set to text
$this->setAttribute('type','text');
$this->setAttribute('name',$name);
$this->setAttribute('id',$name);
$this->tpl_path = 'html/forms/form_input';
}
}
因爲它擴展了元素類我只是說些什麼類型的,這是它會用什麼模板,渲染的過程全部在父做類。
的element_container類是基本相同的,除了它可以容納其他元素,因此具有當它renderes一個額外的處理(基本上是循環進行渲染元素的HTML)
我記住這是一個模型,所以在這裏是一個簡單的表單代碼:
$this->form->addText('name','Nome*');
$this->form->addText('empresa','Empresa');
$this->form->addText('morada','Morada')->setAttribute('size','60');
$this->form->addText('cpostal1','C. Postal');
$this->form->addText('cpostal2','-')->setAttribute('size','6');
$this->form->addText('loc','Localidade');
$this->form->addText('tel','Telefone');
$this->form->addText('fax','Fax');
$this->form->addText('email','E-mail*');
$this->form->addTextArea('msg','Mensagem*');
$this->form->addSubmit('sub', 'Enviar »');
希望這可以讓你瞭解如何創建自己的表單框架。
注:我無法將調用鍊形式化,因爲每個'add [element]'方法都會返回創建的元素的實例。
你需要這個表單框架來做什麼?也就是說,你想要解決什麼問題?我認爲,錯誤的方法是嘗試模仿已經完成的工作 - 在框架XYZ中有抽象形式類和小部件類,因此我也必須這樣做。事實是,現有的框架在需求推動下對這些類有特定的原因。你知道那些需求是什麼嗎? – erisco 2011-05-30 07:49:25
沒有表單框架。 Zend_Form是一個抽象,旨在使表單構建更統一一點,但這是關於它的。沒有大背後的哲學,都是基於HTML的形式。子形式的概念並不是一個真正的概念,只是一個竅門,每個形式實際上都是一個單獨的形式。 – 2011-05-30 07:52:49
對不起,但我們的網絡(互聯網)目前狀況不佳,而且我有一個約會期待。我會盡快更新問題 - 添加我需要的表單框架。謝謝。 – bertzzie 2011-05-30 07:57:34