3

Zend Framework 2を使用してアプリケーションを開発しており、2つの選択した複数のボックスを使用しています。1つ目はデータベースからのデータが入力され、2つ目は空です。

両方の選択の最初のオプションで、disabled属性を「disabled」として設定するつもりです。 このようにして、最初のオプションは使用できなくなり、クリックできなくなります。そのため、ユーザーは、追加/削除ボタンを使用しているときに、これらの最初のオプションを1つの選択から別の選択に渡すことができなくなります。

1を選択

   <select id="AttributesId" multiple="multiple" size="7" title="Select an Attribute" name="idAttributes[]">
   <option value="0">Please Select an Attribute</option>
    <option value="1"> Attribute 1</option>
    <option value="2"> Attribute 2</option>
   </select>

2を選択

<select id="SelectedAttributesId" multiple="multiple" size="7" title="Selected Attributes" name="selectedAttributes[]">
<option value="0">Current Selection</option>
</select>

ZF2で両方のselectを生成するphpコードは次のとおりです。

(...)

public function __construct ($em = null)
    {
        parent::__construct("typeset");
        $this->setAttribute("method", "post")
            ->setAttribute("class", "contact-form");

        if(null !== $em)
        {
            $this->setEntityManager($em);
        }

        $em = $this->getEntityManager();
        $query = $em->createQuery("SELECT a.idAttribute, a.internalName FROM ProductCatalog\Entity\Attribute\Attribute a ORDER BY a.internalName ASC");
        $attributes = $query->getResult();

        $select = new Element\Select('idAttributes');
        $select->setAttribute('title', 'Select an Attribute')
                ->setAttribute('size', 7)
                ->setAttribute('multiple', 'multiple')
                ->setAttribute('id', 'AttributesId');

        $selected = new Element\Select('selectedAttributes');
        $selected->setAttribute('title', 'Selected Attributes')
               ->setAttribute('size', 7)
               ->setAttribute('multiple', 'multiple')
               ->setAttribute('id', 'SelectedAttributesId');

        $labelIdAttributes = 'Attributes List: ';
        $labelSelectedAttributes = 'Selected Attributes List: ';

        $options[0] = 'Please Select an Attribute';

//このフォローインラインは機能しませんが、必要なものがわかります// $ options [0]-> setAttribute('deselect'、'deselect');

        foreach ($attributes as $key => $value)
        {
            $options[$value['idAttribute']] = $value['internalName'];
        }

        $selectedOptions[0] = 'Current Selection';



        $select->setLabel($labelIdAttributes)
               ->setValueOptions($options);


        $selected->setLabel($labelSelectedAttributes)
                ->setValueOptions($selectedOptions);


        $this->add($select);
        $this->add($selected);

(...)
4

2 に答える 2

4

私が正しく覚えている場合は、オプション配列を少し異なる方法でフォーマットする必要があります。

$options = array(
    array('value' => '0', 'label' => ' Please Select an Attribute', 'disabled' => 'disabled'),
    array('value' => '1', 'label' => ' Attribute 1'),
    array('value' => '2', 'label' => ' Attribute 2')
);

Disabledは有効な属性の1つです。

于 2012-10-16T13:51:57.793 に答える
1

フォーム要素を取得し、disabled属性を使用するだけです

$form->get('select_element')->setAttribute('disabled', 'disabled');
于 2015-06-08T08:27:52.167 に答える