2

display:none 属性を Zend_Element_Checkbox に設定しようとしています。チェックボックス自体を非表示にすることができました。残念ながら、ラベルは引き続き表示されます。

これが私のコードです:

$this->addElement('Select', 'junior_accounts', array(
    'label' => 'Junior (15yrs & under)',
    'multiOptions' => $personNumberList,
    'tabindex' => $tabIndex++,
  ));

$this->getElement('junior_accounts')->setAttribs(array('style' => 'display: none'));

これを行うプログラム的な方法はありますか、または要素のクラスを設定して適切な CSS 定義を追加する必要がありますか?

ありがとう!

4

4 に答える 4

2

それが非表示であり、リクエスト全体を通して非表示のままである必要がある場合は、要素タイプを[選択]から[非表示]に変更する必要があります。後で(JSを使用して)表示する必要がある場合は、JSを使用して非表示にし、JSを使用しないユーザーがアクセスできるようにする必要があります。要素を非表示にすることができます(jQueryと各要素をラップするタグの使用を想定):

$('#elementId').parent().hide(); 
//or 
$('#elementId').parent().children().hide() // if you want the container visible
于 2012-05-18T20:53:42.553 に答える
1

そのようなものがうまくいくはずです。

$this->getElement('junior_accounts')->removeDecorator('Label');

テストしていないため、内部にタイプミスがある可能性があります

または、非表示にするだけの場合:

$this->getElement('junior_accounts')->getDecorator('Label')->setOption('style', 'display: none');
于 2012-05-17T20:45:17.960 に答える
1

Zend_Form_ElementviaのラベルにアクセスできますZend_Form_Element::getDecorator()。次にstyle、デコレーターのオプションを設定して、その CSS プロパティを制御できます。

$label = $this->getElement('junior_accounts')->getDecorator('Label');

if ($label instanceof Zend_Form_Decorator_Abstract) {
    $label->setOption('style', 'display: none');
}
于 2012-05-17T20:47:57.017 に答える