2009-08-06 7 views
3

私はZendの形でこのようなHTMLコードを挿入する必要があります。Zend Frameworkの:私の形で挿入DIVとイメージ

<div class="myClass1" id="myId1" style="display: none;"><img src="images/myImage.jpg" /></div> 

上記のHTMLコードのためのZendのフレームワークのコードがどうなりますか。 Create_Elementを試しましたが、常にdivタグ内にボタンを作成します。サンプルコードを与えてください。ありがとう

答えて

8

"html"というカスタム要素を作成しました。私は/フォーム/要素にHtml.phpを追加しました:私は、ビューヘルパーFormHtml.phpを追加する必要がありました

 

/** Zend_Form_Element_Xhtml */ 
require_once 'Zend/Form/Element/Xhtml.php'; 

/** 
* HTML form element 
* 
*/ 
class Zend_Form_Element_Html extends Zend_Form_Element_Xhtml 
{ 
    /** 
    * Default form view helper to use for rendering 
    * @var string 
    */ 
    public $helper = 'formHtml'; 
} 
 

セカンド(私はアプリケーション/ビュー/ヘルパーにそれを置く):

 

/** 
* Abstract class for extension 
*/ 
require_once 'Zend/View/Helper/FormElement.php'; 

/** 
* Helper to show HTML 
* 
*/ 
class Zend_View_Helper_FormHtml extends Zend_View_Helper_FormElement 
{ 
    /** 
    * Helper to show a html in a form 
    * 
    * @param string|array $name If a string, the element name. If an 
    * array, all other parameters are ignored, and the array elements 
    * are extracted in place of added parameters. 
    * 
    * @param mixed $value The element value. 
    * 
    * @param array $attribs Attributes for the element tag. 
    * 
    * @return string The element XHTML. 
    */ 
    public function formHtml($name, $value = null, $attribs = null) 
    { 
     $info = $this->_getInfo($name, $value, $attribs); 
     extract($info); // name, value, attribs, options, listsep, disable 

     // Render the button. 
     $xhtml = 'view->escape($id) . '">' 
      . $this->_htmlAttribs($attribs) 
      . $this->view->escape($value) . ''; 

     return $xhtml; 
    } 
} 
 

することができますフォームに次のようにHTMLを追加してください:

 

$form->createElement('html', 'someid', array('value'=>'gna

foobar

'));

もっと単純化が可能かもしれません。

+0

あなたの答えをありがとう。それは私を助けた。 – NAVEED

3

要素の値としてマークアップを渡すことによってhtmlを追加するには、 'note'要素型を使用できます。

+1

ここにサンプルコードを教えていただけますか? – NAVEED

0

通常は、HTML形式でレンダリングするには、array(escape => false)オプションを指定してdescriptionを使用します。

0

フォームのViewScriptはありますか? this discussionを参照してください。

4

フォーム要素を作成している場合は、私は以下のコード、またはあなたの「価値」検証エラー時に消えてしまうのように、あなたははisValid()メソッドをオーバーライドする必要があると思う:

class RenomoZF_Form_Element_Note extends Zend_Form_Element_Xhtml 
{ 
    /** 
    * Default form view helper to use for rendering 
    * @var string 
    */ 
    public $helper = 'formNote'; 

    public function isValid($value, $context = null) { 
     return TRUE; 
    } 

} 
+0

ありがとう!これは私にトンを助けた!提出時に私のメモが消えていた理由を理解できませんでした。 :) – Luke

+0

あなたは私のヒーローです! –

1

同じ問題がtomas.fejfarのコメントから次のものを使用しただけでした。

array(escape => false) 

e.g. 

$decorators = array(
    'ViewHelper', 
    'Label', 
    array('Description', array('escape' => false,)), 
    'Errors') 
); 

治療を受けました。

乾杯

2

これはZF 1.10で準完成です。誰かがZend_View_Helper_FormNoteクラスを作ったと思われるので、任意の(デコレータのcept)HTMLを挿入できます。

これを使用するには、Zend_Form_Element_Xhtmlを拡張する必要があります。

次に、フォームプラグインローダーを使用して、フォーム/要素クラスをフォームオブジェクトに追加します。ライブラリのフォルダ(MyNs/Form/Element/Note.php)に入れます。

$yourForm= new Zend_Dojo_Form(); 
$yourForm->addPrefixPath("MyNS_Form", "MyNS/Form/"); 

これで、任意の要素と同じように呼び出すことができます。

$yourForm->addElement(
       'note', 
       'myElementId', 
       array(
       'value'=>'<a href="#">omgwtfbbq</a>' 
       ) 
      ) 

私はこの前に述べたように、まだデコレータでコードをラップしますが、そのソリューションZFに事前に構築されました。

+0

+1 for omgwtfbbq –

0

上記の方法では、検証エラーのあるフォームを送信すると、FormNoteという値がまだ表示されなくなります。

編集:削除することができます。上書きすると、isValid()の問題は解消されます。

+2

元の質問の日付に注意してください。この質問はほぼ2年前に受け入れられた答えであった。 –

関連する問題