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);
(...)