【发布时间】:2020-05-07 10:24:58
【问题描述】:
我需要找到一种方法来设置具有multiple 属性的select-type 字段的默认值。
这是通过控制器发送到视图的数据:
$categories = [
['id' => 1, 'description' => 'Hardware'],
['id' => 2, 'description' => 'Sofware'],
['id' => 3, 'description' => 'Peopleware'],
['id' => 4, 'description' => 'Alienware'],
];
$selectedCategoriesIds = [1, 3];
$this->set(compact('categories', 'selectedCategoriesIds'));
视图看起来像这样:
<select name="categories[_ids][]" multiple="multiple">
<?php foreach ($categories as $category): ?>
<option value="<?= $category->id ?>"<?= (in_array($category->id, $selectedCategoriesIds) ? 'selected' : '') ?>><?= $category->description ?></option>
<?php endforeach; ?>
</select>
这是视图中生成的 HTML:
<select name="categories[_ids][]" multiple="multiple">
<option value="1" selected>Hardware</option>
<option value="2">Software</option>
<option value="3" selected>Peopleware</option>
<option value="4">Alienware</option>
</select>
一切正常,我的问题是我是否可以使用 CakePHP 的 FormHelper 获得相同的结果,所以我不需要遍历 $categories 并在视图内调用 in_array()。我已经查阅了食谱,但我没有找到任何东西,或者不明白在这种特定情况下如何去做。我认为它会是这样的:
<?= $this->Form->control('categories._ids', ['some params']) ?>
谢谢。
【问题讨论】:
-
请将您的问题翻译成英文或使用pt.stackoverflow.com
标签: php cakephp form-helpers cakephp-4.x