从下拉列表中传递值而不是id

时间:2016-01-18 14:51:16

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

如何从下拉列表中传递确切的文本,而不是其值。 我正在使用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选择文本,我只想将文本传递给我的控制器。

3 个答案:

答案 0 :(得分:0)

Codeigniter 3.0.4 form_dropdown(名称,选项)

flatMap()

结果:

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

echo form_dropdown('shirts', $options);

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

答案 1 :(得分:0)

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

你可以试试这个

文件名: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();

?>

可生产

enter image description here

答案 2 :(得分:0)

这就是魔术:

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

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