【问题标题】:Pass value and not id from dropdown list从下拉列表中传递值而不是 id
【发布时间】:2016-01-18 14:51:15
【问题描述】:

如何传递下拉列表中的确切文本,而不是其值。 我正在使用 CodeIgniter,

$tableNames = array_column($tableData, 'TABLE_NAME');
        asort($tableNames);
        echo form_open('index.php/TableController');
        echo form_dropdown('TABLE_NAME', $tableNames);
        echo "<br><br>";
        echo form_submit("submit1", "Table");
        echo form_close();

这会导致传递所选项目的 id,而不是文本。 我不想传递整个数组并使用 id 再次选择文本,我只想将文本传递给我的控制器。

【问题讨论】:

  • 不要设置值。如果没有值,默认浏览器行为是发送选项文本。例如&lt;option&gt;Foo&lt;/option&gt; 发送Foo,而&lt;option value="bar"&gt;Foo&lt;/option&gt; 将发送bar。或者只是将文本设置为值:&lt;option value="Foo"&gt;Foo&lt;/option&gt;。请注意,提及id 会让人感到困惑。 DOM id 字段未与表单一起提交。
  • 不确定你在问什么,但在一个典型的下拉列表中
  • 感谢您的回答,很明显我可以在纯 html 中完成,但它是否可用于 CodeIgniter 框架?我没有在其文档中找到答案。

标签: php codeigniter model-view-controller listbox dropdown


【解决方案1】:

Codeigniter 3.0.4 form_dropdown(name, options)

$options = array(
   'small'         => 'Small Shirt',
   'med'           => 'Medium Shirt',
   'large'         => 'Large Shirt',
   'xlarge'        => 'Extra Large Shirt',
);

echo form_dropdown('shirts', $options);

结果:

<select name="shirts">
  <option value="small">Small Shirt</option>
  <option value="med">Medium  Shirt</option>
  <option value="large">Large Shirt</option>
  <option value="xlarge">Extra Large Shirt</option>
</select>

参考:https://www.codeigniter.com/userguide3/helpers/form_helper.html

【讨论】:

    【解决方案2】:

    你的问题有点不清楚。但是会先给它从控制器传递你的数组项到视图更好。

    你可以试试这个

    文件名:Test.php

    <?php
    
    class Test extends CI_Controller {
    
        public function index() {
    
            $data['records'] = array(
    
                array(
                    'id' => 2135,
                    'value' => 'John',
                ),
    
                array(
                'id' => 3245,
                'value' => 'Sally',
                ),
    
                array(
                    'id' => 5342,
                    'value' => 'Jane',
    
                ),
                array(
                    'id' => 5623,
                    'value' => 'Peter',
                )
    
            );
    
            $this->load->view('test', $data);
        }
    
        public function submit_test() {
          var_dump($this->input->post('test'));
          exit;
        }
    }
    

    在你看来

    <?php
    
    echo form_open_multipart('index.php/test/submit_test');
    
    $array_items = array_column($records, 'value', 'id');
    
    $s = array(
            'class'=> 'form-control'
    );
    
    echo form_dropdown('test', $array_items, '', $s);
    
    echo form_submit("submit", "Table");
    
    echo form_close();
    
    ?>
    

    生产

    【讨论】:

      【解决方案3】:

      这很神奇:

      $tableNames = array_combine($tableNames, $tableNames);
      

      我得到了键和值相同的关联数组,所以如果我将它传递给表单下拉列表,选项值和文本都将相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多