2012-09-07 32 views
2

我在學習Zend Framework!我對它很感興趣,但是我找不到一個教程,它說明了它是一個Zend_Form類存儲的地方!也許它的東西很簡單,但我不能得到它尚未... 這個我見過的教程:我在哪裏可以保存Zend_Form文件?

<?php 
class Form_Example extends Zend_Form 
{ 
    public function init() 
    { 
    // Great code here 
    } 
} 

但沒有人說哪裏這一代碼進入?????在目錄樹中的文件夾中的文件?我已經閱讀並理解,並且我已經用模塊,控制器,操作,佈局做了一個小例子,並且我知道名稱約定和文件夾結構的重要性。那麼這個表單類必須去哪兒,我怎麼從視圖中調用它?

非常感謝,我知道這一定是容易的人誰已經知道如何與Zend框架很好地工作=)

+1

如果你使用的是模塊化的目錄結構,然後按[本教程(http://codingexplained.com/coding/php/zend-framework/module-based-形式目錄)將引導你一路通過,假設你想保持每個模塊的表單存儲。如果沒有,請參考這裏的答案。 :-) – Andy0708

+0

我沒有找到該教程比較早,所以它肯定會幫助我,thankls了很多,我會讀它=) – Metafaniel

回答

2

做到這一點,最好的辦法是讓ZF爲你做它。 ZF爲Windows和* nix提供了一個命令行界面。

在命令行中,您可以輸入zf create form Example,然後ZF將在其默認應用程序級別位置創建一個名爲Example.php的空表單。

通常這將在application/forms/Example.php和類名將是Application_Form_Example

如果你需要有一個模塊的命令將採取類似的構造形式:
zf create form Example -m admin
其中-m表示想要一個模塊中創建的文件,admin是模塊的名稱。

表單是Zend Framework中預定義的資源之一,因此具有默認位置。還有幾個其他資源是預定義的並且具有默認值。

The Module Resource Autoloader

Zend框架附帶了一個具體的實現包含資源類型映射 覆蓋默認 Zend_Loader_Autoloader_Resource的推薦的Zend框架 MVC應用程序的目錄結構。這裝載機, Zend_Application_Module_Autoloader,具有以下映射:

forms/   => Form 
    models/   => Model 
    models/DbTable/ => Model_DbTable 
    models/mappers/ => Model_Mapper 
    plugins/  => Plugin 
    services/  => Service views/ 
    helpers   => View_Helper 
    filters   => View_Filter 

舉個例子,如果你有「Blog_」的前綴的模塊,並試圖將類實例 「Blog_Form_Entry」 ,它看起來在資源目錄中的「表格/」 子目錄名爲「Entry.php」文件。當使用模塊 白手起家與Zend_Application, Zend_Application_Module_Autoloader的一個實例,將默認爲每個 離散模塊創建,讓您自動加載模塊的資源。

+0

我也使用命令行界面,似乎有用!我已經建立了我的項目用'ZF創建project'正如我在書中我在學紅,但我不知道ZF可以爲您創建實例這樣! = O對於像我這樣仍在試圖學習ZF如何工作的人來說,這似乎相當有用!謝謝!非常有用;) – Metafaniel

2

我通常有我在表格文件夾的所有形式,旁邊的模特,控制器和觀點。

所以,我的文件結構如下所示:

application -> 
    configs 
    layouts 
    plugins 
    controllers 
    models 
    views 
    forms -> 
    form1.php 
    form2.php 

在應用程序中使用起來並不那麼簡單。您必須在您的控制器中實例化表單類,然後將表單傳遞給您的視圖。因此,在你的控制你想要的東西,如:

$form1 = new Application_Form_Form1($options); 
$request = $this->getRequest(); 

if($request->isPost()) { 
    if($form1->isValid($post)) { 
    // form is valid, do form processing here 
    } 
} 

$this->view->form1 = $form1; 

那麼你的視圖文件裏面,你把表格:

<html> 
<body> 
    <div id="body"> 
    <?php echo $this->form1; ?> 
    </div> 
</body> 
</html> 
+0

我做這種類似的事情:'<?PHP的echo $這個 - >佈局( ) - >內容>'在視圖打印的東西,所以基本上我需要同樣做到這一點!感謝您的幫助;) – Metafaniel

2

在你的問題的心臟是的問題:

  1. 自動加載
  2. 如何ZF autoloader做工一般,和
  3. 如何ZF自動加載默認情況下,在一個標準的ZF配置應用

這實際上是三個不同的,但顯然有關,問題。

假設您有默認的ZF安裝,其中appnamespace設置爲「應用程序」,然後將您的表單類別命名爲Application_Form_Example並將其存儲在文件application/forms/Example.php中。

然後,可以使用實例化(在控制器中,例如):

$form = new Application_Form_Example()

確保您在application/configs/application.iniresources.modules[] =

有關自動加載更多的討論,請參見https://stackoverflow.com/a/10933376/131824

+0

我剛剛劃破那些你對此有何評論概念的表面,SI確實是我需要更多的閱讀和學習,最終我明白了一切。這個框架這是一個有點混亂,在第一,但你可以聞到它的力量;)感謝您的幫助! – Metafaniel

+1

如此真實。我發現學習ZF是一個陡峭的攀登。但是,一旦我有了更多的經驗,我確實發現它相對簡單。簡直不敢相信我實際上是這麼說的。 ;-) 祝你好運! –

相關問題