【问题标题】:cakephp create select from databasecakephp 从数据库中创建选择
【发布时间】:2017-07-16 16:45:39
【问题描述】:

我正在尝试使用 cakePHP 开发一个表单。

 <div class="links form large-9 medium-8 columns content">
     <?= $this->Form->create($link) ?>
     <fieldset>
         <legend><?= __('Add Link') ?></legend>
    <?php
        echo $this->Form->control('section_id', ['options' => $sections]);
        echo $this->Form->control('link');

        //how do I make this display a text value
        echo $this->Form->control('image_id', ['options' => $images]);

        echo $this->Form->control('active');
        echo $this->Form->control('created_on');
    ?>
     </fieldset>
     <?= $this->Form->button(__('Submit')) ?>
     <?= $this->Form->end() ?>
 </div>

它创建一个选择元素

 <select name="image_id" id="image-id">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
 </select>

我希望它显示的是

 <select name="image_id" id="image-id">
      <option value="1">item a</option>
      <option value="2">item b</option>
      <option value="3">item c</option>
      <option value="4">item d</option>
 </select>

请注意,数据存储在数据库表“images”中,id 字段为“id”,所需的文本位于“file”中

如何使它从数据库中创建选择元素,使用所需的文本值而不是选项文本值的 id 值?

【问题讨论】:

    标签: php database cakephp drop-down-menu


    【解决方案1】:

    使用数据库中的数据创建选择字段:

    在您的 ImagesTable 中:

    确保您已正确设置显示字段:

    $this->displayField('file');
    

    在您的控制器中:

    $images = $this->Images->find("list");
    $this->set(compact("images"));
    

    在您的模板文件中:

    $this->Form->control("image_id", ["type" => "select"]);
    

    更多信息:Form Helper

    【讨论】:

    • 我把这个 $this->displayField('file');
    • 您的 ImagesTable.php 文件中应该有方法 initialize(),它应该位于 src/Model/Table 中。它可以已经设置为使用“id”字段,如果是这样,请将其更改为您希望被视为主要显示字段的字段。如果没有,只需在该方法的末尾添加一行。
    • 谢谢。我需要从自动生成的代码中实际更改的唯一部分是 initialize() 函数中的这一行。其他一切都已按照您的建议进行。它现在可以正常工作了!
    猜你喜欢
    • 2014-04-26
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多