2011-09-13 8 views
2

ビュースクリプトを使用してzendでフォームをビルドしました。私はビュースクリプトを使用することで、すべてのddとdtが削除され、フォームスクリプトファイル(patientScriptForm.phtml)の形式で自分のhtmlタグを使用できると思っていましたか?Zend Form ViewScriptはdtタグとddタグを削除しますか?

フォームスクリプトファイルでdivタグのみを使用し、自動生成されたdtタグとddタグを使用する方法はありますか?ありがとう!!

私は以下のコードで非常に基本的なフォームを持っている:

以下
$age = new Zend_Form_Element_Text('age'); $age->setLabel('age'); 

$submit = new Zend_Form_Element_Submit('submit'); $submit->setValue($submit); 

$this->addElement($age)->addElement($submit); 

$this->setDecorators(array (array ('ViewScript', array('viewScript' => 'patientScriptForm.phtml')))); 

は私viewscriptあるpatientScriptForm.phtml

以下
<form action="<?php echo $this->escape($this->element->getAction()) ?>" method="<?php echo $this->escape($this->element->getMethod()) ?>"> 
<div> 
<?php echo $this->element->age ?> 
</div> 
<div> 
<?php echo $this->element->submit ?> 
</div> 
</form> 

は、ブラウザの出力です:

<form action="" method="post"> 
<div> 
<dt id="age-label"> 
<label for="age" class="optional">age</label> 
</dt> 
<dd id="age-element"> 
<input type="text" name="age" id="age" value="" /> 
</dd> 
</div> 
<div> 
<dt id="submit-label"> 
</dt> 
<dd id="submit-element"> 
<input type="submit" name="submit" id="submit" value="submit" /> 
</dd> 
</div> 
</form> 
+2

http://stackoverflow.com/questions/838074/how-to-remove-dd-and-dt-html-elements-when-rendering-a-form-element-in-zfを参照してください。 – Cymen

+0

+1にCymen。具体的には、 'HtmlTag'デコレータがdtタグとddタグを追加しています。このデコレータをカスタマイズして、異なるタグを使用するか、まったく削除することができます。 – asgeo1

+0

こんにちはCymen、どうすれば 'HtmlTag'と一緒にそれを取り除くのですか?私はHtmlTagデコレータを試してみましたが、失敗しました。 – coder3

答えて

3

問題フォームにデコレータViewScriptを使用しているときに、フォーム要素自体のために機能しますが、あなたの要素はそれぞれ独自のデコレータスキームを持っています。フォームはあなたのビュースクリプト内の各エコー文の最後に

->setDecorators(array("ViewHelper")) 

を追加することはないことをあまりにも多くの要素を持っている場合は、あなたのビュースクリプトで

簡単な解決策は

<?php echo $this->element->age->setDecorators(array('ViewHelper')) ?> 
+0

返信ありがとうございます。これは私のビュースクリプトファイルにあり、このエラーがあります: 警告:/ Users/c33/zendのViewScriptデコレータに登録されているビュースクリプトはありません-dev/library/Zend/Form/Element.php 2041行 – coder3

+0

coder3 oopsは、 'ViewHelper'を意味していました。私の答えを固定 – Phil

+0

ありがとう!うわー、私はこの答えを見つけるのにどれくらいの時間がかかったのか信じられません。私はネットを2日間真っ直ぐに見ていた。再度、感謝します!! – coder3

0

可能性がありあなたのフォームのすべての要素に対して上記の呼び出しを行うのと同じ効果を持つ次のことも行うことができます:

class Application_Form_Login extends Zend_Form { 
    public function init() { 
    // ... 

    $this->setElementDecorators(
     array(
      "ViewHelper", 
      "Errors" 
     ) 
    ); 
    } 
} 
関連する問題