1

Zend_Form_Element_Submit でエスケープを無効にできないため、ラベルに特殊文字が含まれていると値が表示されません..

これは私の実際の Zend Form のコードです。

$this->submit = new Zend_Form_Element_Submit('submit');
$this->submit->setLabel('Iniciar Sesión');
$this->submit->setIgnore(true);
$this->addElement($this->submit);

試してみまし$this->submit->getDecorator('Label')->setOption('escape', false);たが、「非オブジェクト」エラーが発生しました (送信で「ラベル」デコレーターが使用されていない可能性があります)。

私も提案どおりに試しまし$this->submit->setAttrib('escape', false);たが、テキストも表示されません..何か考えはありますか? ありがとう

4

4 に答える 4

1

Submit 要素で使用されるヘルパーは、デフォルトでエスケープします。ラベル デコレーターとは異なり、送信ラベルは HTML 属性に含まれるため、エスケープする必要があります。

あなたのラベル - Iniciar Sesión - は完全に有効な UTF-8 文字列なので、エスケープされたバージョンは同じになります。ラベルが表示されない場合は、何か他の問題が発生しています。あなたのページは、Zend View が使用しているものと一致しない文字セット (デフォルトでは UTF-8) を使用して提供されていると思います。

ページのソースを表示して、実際に出力される内容を確認してください。これにより、さらに手がかりが得られる場合があります。または、このフォームが表示されているページが公開されている場合は、URL を提供していただければ、問題を特定できる可能性があります。

于 2012-11-28T17:34:42.173 に答える
1

デフォルトでは、送信フォーム要素のラベルデコレーターはありません(これがエラーが発生する理由です)。$this->submit->setLabel('Iniciar Sesión');値は Zend_View_Helper_FormSubmit に渡されます。これは常にエスケープを行い、ラベルを値として使用します。

于 2012-11-28T17:02:36.617 に答える
1

これを行うのと同じくらい簡単なはずです:

$element->addDecorator('Label', аrray('escape'=>false));

または参照してくださいsetEscape()http://framework.zend.com/manual/1.12/en/zend.form.standardDecorators.html

名前付きデコレータの取得に失敗したことについて...getDecorators() 結果に「ラベル」が表示されますか?

于 2012-11-28T16:19:02.220 に答える
0

同様の問題に遭遇しました。私の例では、ラベルと説明の両方をテキスト フィールド要素に追加しました。このコード行により、そのフィールド要素に添付された説明の html エスケープをオフにすることができました。

$form->getElement('txtUPC')->getDecorator('description')->setOption('escape', false);

私のテストでは、setEscape()はフォーム要素またはそのデコレーターによって認識されませんでした。

于 2014-05-23T21:24:13.787 に答える