CakePHP选择选项类

时间:2015-06-29 19:44:30

标签: php class cakephp select

有人知道如何将类添加到视图文件中的选择选项吗?

我现在有:

DATE

我所有的选项元素都是这样的:

echo $this->Form->input(
                'shelf_id',
                array(
                    'options' => $Shelves,
                    'label'=> 'Etagère :',
                    'default' => $Place['Place']['shelf_id'],
                    'class'=>'form-control')
            );

但我希望他们是这样的:

<option value="1">Element</option>

选项类的值应该是每个货架的id,但我现在拥有的是:

<option value="1" class="myClass">Etagere 1</option>

但是我希望class =“...”带有每个shelve id的id。

3 个答案:

答案 0 :(得分:2)

我不相信Cake提供了一种向单个<option>标记添加类的简单方法。

您可以使用Html::tag()自行构建选项,记住要考虑selected选项。例如,您可以执行以下操作: -

<select>
<?php
    // Work out what the selected value is (falling back on a default)
    $selected = !empty($this->request->data['Place']['shelf_id']) ? $this->request->data['Place']['shelf_id'] : $Place['Place']['shelf_id'];
    // Generate the <option> tags
    foreach ($Shelves as $key => $val) {
        echo $this->Html->tag(
            'option', 
            $val, 
            array(
                'class' => 'myClass',
                'value' => $key
                'selected' => $selected === $key ? 'selected' : null
            )
        )
    }
?>
</select>

您需要在<select>标记上添加正确的属性,并为此添加标签。您应该能够通过查看问题中代码生成的标记来查看这些内容。

<强>更新

要使<option>代码类与其值相同,只需将$key传递给class属性: -

foreach ($Shelves as $key => $val) {
    echo $this->Html->tag(
        'option', 
        $val, 
        array(
            'class' => $key,
            'value' => $key
            'selected' => $selected === $key ? 'selected' : null
        )
    )
}

答案 1 :(得分:0)

像这样创建你的$Shelves数组

$Shelves =  array(
    array('value' => 1, 'name' => 'first option', 'class' => 1),
    array('value' => 2, 'name' => 'second option', 'class' => 2),
    array('value' => 3, 'name' => 'third option', 'class' => 3)
);

请参阅此link

答案 2 :(得分:0)

'arilia'所指的方法似乎不再适用。我按照描述准备了一个数组,但是没有填充类属性,该值是所有数组值的串联,即使用此方法:

echo $this->Form->input('input_id', ['options' => $inputArray, 'empty' => true]);

相反,我手动生成了HTML:

echo '<label for="input-id">Input</label>';
echo '<select id="input-id" name="input_id" required="required">';
echo '<option value="" data-attribute=""> </option>';

foreach($inputArray as $inputRow){
    echo '<option value="'.$inputRow['value'].'" data-attribute="'.$inputRow['data-attribute'].'">'.$inputRow['data'].'</option>';
}

echo '</select>';