2014-07-14 39 views
0

我正在從ZF 2.3.1的相冊教程中學習。生成表單 - 新行和動作

add.phtml我有以下代碼:

$form->setAttribute('action', $this->url('album', array('action' => 'add'))); 
$form->prepare(); 

echo $this->form()->openTag($form); 
echo $this->formHidden($form->get('id')); 
echo $this->formRow($form->get('title')); 
echo $this->formRow($form->get('artist')); 
echo $this->formSubmit($form->get('submit')); 
echo $this->form()->closeTag(); 

的HTML輸出是這樣的:

<form action="&#x2F;album&#x2F;add" method="POST" name="album" id="album"><input type="hidden" name="id" value=""><label><span>Title</span><input type="text" name="title" value=""></label><label><span>Artist</span><input type="text" name="artist" value=""></label><input type="submit" name="submit" id="submitbutton" value="Add"></form> 

然而accoring補習的形式應該是這樣的:enter image description here

問題:

  1. 爲什麼ZF2不會在每行之間生成任何新行標記,例如<p><div>?在我的瀏覽器所有的輸入都在同一行(也許是在教程中沒有提到的一些風格問題),但是我預計爲什麼在行動/album/add改爲&#x2F;album&#x2F;add一些額外的標籤,將產生

  2. - 是否有任何安全原因那?表單操作設置爲$form->setAttribute('action', $this->url('album', array('action' => 'add')));,但是當我用同樣的方法來生成鏈接URL <a href="<?php echo $this->url('album', array('action' => 'add')); ?>">test</a>它創建/album/add URL如我所料

回答

1

爲什麼ZF2不會產生任何新的生產線的標籤,例如<p><div>每一行之間?

一個ZF1的形式系統的最大批評是通過編程生成表單標記(裝飾用),它使人們很難爲用戶自定義輸出。因此在ZF2的助手使用最少的標記開箱即用,讓用戶來包裝的觀點與自己的標記中輸入:

<?=$this->form()->openTag($form)?> 

<?=$this->formHidden($form->get('id'))?> 

<div class="form-row"> 
    <?=$this->formRow($form->get('title'))?> 
</div> 

<div class="form-row"> 
    <?=$this->formRow($form->get('artist'))?> 
</div> 

[etc.] 

仍然有可能有這種通過擴展formRow助手自動完成。

爲什麼在行動/album/add改爲&#x2F;album&#x2F;add

我以前從來沒有注意到這一點。我猜想表單類被設置爲自動轉義HTML屬性值(通常是一件好事)。它似乎仍然工作得很好,所以我不會太擔心這個。如果您認爲應該改變行爲,也許在Github上爲它開放一個問題。

+0

然而,在教程中第一件事情是有道理的,沒有html代碼,所以我認爲這是一些配置問題。第二件事,我建議你在github上報告問題。謝謝您的回答 –