8

有没有办法在 FormHelper 生成的选择下拉列表中传递空选项的值?

我正在创建这样的输入:

echo $this->Form->input('supplier_id', array('empty'=>true));

像这样从控制器自动提供的值

$suppliers = $this->Product->Supplier->find('list');
$this->set(compact('suppliers'));

并且选择框是这样创建的:

<select name="data[Product][supplier_id]" class="form-control" id="ProductSupplierId">
  <option value=""></option>
  <option value="1">Lolë Montreal</option>
  <option value="2">Spiritual Gangster</option>
  <option value="3">Havaianas</option>
</select>

但我希望第一个选项(空选项)的值为 0 而不是 '' 可能吗?或者我应该$suppliers用类似的东西修改控制器中的数组

$suppliers[0] = '';

并从 FormHelper 输入中删除空选项?

4

4 回答 4

14

Using the verbose array syntax you can chose any value for empty:

echo $this->Form->input('supplier_id', ['empty' => ['0' => '']]);

See http://www.dereuromark.de/2010/06/23/working-with-forms/

于 2013-09-12T07:44:28.730 回答
3
echo $this->Form->input('supplier_id', array('empty'=>'Select'));

您还可以添加所需的:

echo $this->Form->input('supplier_id', array('empty'=>'Select', 'required' => true));
于 2015-07-13T13:34:06.037 回答
0

在 cakephp 3.x 中你会遇到这个问题......

它会像

Select
0
   value1
   value2
   value3
   ...

所以我通过以下方式修复它:

  • 在控制器中:

    ...从数据库中获取数据的东西

    $data_init = ['0'=>'选择'];

    $data = $data_init + $query->toArray();

    $this->set('$list', $data);

  • 鉴于:

    '选项' => $列表,

列表将如下所示:

Select
value1
value2
value3
...
于 2016-06-27T16:22:20.773 回答
0

以上所有方法都可以,但是,如果您想validate通过,model那么您需要使用它

  <?= $this->Form->control('supplier_id', ['options' => $suppliers, 'empty' => '--Select--']) ?>
于 2018-08-11T06:40:41.623 回答