我只需要从查询字符串中获取所选值。目前我只是得到列表的索引而不是实际值。我不能使用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');
供参考
答案 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.id
和Student.address_suburb
会输出一个选项Student.id
为option
值,Student.address_suburb
为option
文本。
如果您需要的不是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')
)));