如何从源自<select>表单输入的查询字符串中检索值?</select>

时间:2014-07-09 11:20:27

标签: cakephp cakephp-2.3

我只需要从查询字符串中获取所选值。目前我只是得到列表的索引而不是实际值。我不能使用Post,因为我需要分页搜索的值。

我没有收到错误,只是返回列表的索引号。答案必须简单,我尝试过很多种组合。我也在查询前尝试了['Student']

我只是看不到文档中的答案,之前关于这个主题的帖子对我也没有用。我被卡住了。

查询字符串有一个数字{url} students / myindex5?address_suburb = 1 //郊区应该是一个字符串,它在下拉列表中显示为一个字符串

public function myindex5() {

    $this->set('filterSuburb', $this->Student->find('list', array(
        'fields' => array('Student.address_suburb')
    )));

    $havefilter = false;        
    $tsub = $this->request->query['address_suburb'];  
    // $tsub = array_combine($tsub, $tsub);//didnt work
    debug($tsub); //I just get the index value of the list

    if (!empty($tsub)) {
        // ...

查看

echo $this->Form->create('Student', array(
    'type' => 'get',
    'url' => array('controller' => 'students', 'action' => 'myindex5')
));
echo $this->Form->input('address_suburb', array(
    'options' => $filterSuburb,
    'empty' => '(choose one)')
);
echo $this->Form->end('Search'); 

供参考

1 个答案:

答案 0 :(得分:1)

使用select输入时,值send是option标记的值:

<select>
    <option value="1">Option 1</option>
</select>

如果我选择“选项1”,您将获得1,而不是“选项1”。

如果您想更改value属性,则需要为FormHelper::input方法options参数设置其他内容,例如:

array(
    'value1' => 'Text 1',
    /** etc. **/
);

如果您希望自己的价值成为学生的ID,只需将find来电更改为:

$this->set('filterSuburb', $this->Student->find('list', array(
    'fields' => array('Student.id', 'Student.address_suburb')
)));

如果你看find('list') documentation,你会看到:

  

调用find('list')时,传递的字段用于确定应该用作数组键和值的内容,以及可选择将结果分组的内容。

因此传递Student.idStudent.address_suburb会输出一个选项Student.idoption值,Student.address_suburboption文本。

如果您需要的不是Student.id,只需在find('list')来电中更改,您甚至可以将其更改为option <option value="redcliff">redcliff</option>(相同的值和文字) ),通过做:

$this->set('filterSuburb', $this->Student->find('list', array(
    'fields' => array('Student.address_suburb', 'Student.address_suburb')
)));