【问题标题】:How do you create a form select making value the same as option text from db array如何创建表单选择使值与 db 数组中的选项文本相同
【发布时间】:2016-10-23 10:03:37
【问题描述】:

假设我的控制器中有:

$this->set('locations', $this->Location->find('list', array('fields' => array('state')) )); 

如何让我的视图生成带有选项的表单选择:

<select name="data[Location][state]" class="inputbox" id="Location">
<option value="Arizona">Arizona</option>
<option value="California">California</option>
<option value="Hawaii">Hawaii</option>
</select>

因为它正在生成:

<select name="data[Location][state]" class="inputbox" id="Location">
    <option value="1">Arizona</option>
    <option value="2">California</option>
    <option value="3">Hawaii</option>
    </select>

我知道 cakephp 默认使用主键作为值,并且有一个已回答的问题,但该解决方案对我不起作用: how do you create a select with both value and the label the same from an array in cakephp?

在我看来,我有:

<?php echo $form->select('Location.state', $locations); ?>

我的数据库是:locations
id |状态
1 |亚利桑那
2 |加利福尼亚
3 |夏威夷
等等

【问题讨论】:

    标签: php html cakephp cakephp-1.3


    【解决方案1】:
    $this->set('locations', $this->Location->find('list', array('fields' => array('state','state')) ));
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    【解决方案2】:

    调用list时可以分别通过keyField和valueField选项配置key和value使用的字段:

    http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#finding-key-value-pairs

    $locations = $this->Location->find('list', ['keyField' => 'state', 'valueField' => 'state']);
    
    $this->set('locations', $locations);
    

    【讨论】:

    • 他正在使用 cake 1.3
    【解决方案3】:

    好的,解决方案非常简单...在我的控制器中,字段数组需要指定的值和文本:

    $this->set('locations', $this->Location->find('list', array('fields' => array('state','state')) ));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2018-01-27
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多