在CakePHP中重新加载页面后,在HTML选择菜单中显示所选选项

时间:2012-03-22 11:22:43

标签: cakephp cakephp-2.0 html-form html-select

我正在构建一个非javascript版本的网站,因为有许多客户没有启用javascript。在此站点上,客户选择他们将访问的国家/地区,然后相应地显示与该国家/地区相关的数据。

我设法让这个工作。他们使用HTML下拉菜单选择国家/地区,单击“提交”,然后使用与所选国家/地区相关的数据重新加载页面。但是,它不会更改HTML下拉菜单中显示的国家/地区,因此当页面重新加载时,它将恢复为“选择国家/地区”。

我想要发生的是,如果您从下拉框中点击英国,例如,当页面重新加载时,下拉列表应显示英国。

以下是我目前用于视图文件的代码:

<form name="countryselect" action="/selected-country/" method="post">
    <select id="country-list" name="countryselected">
        <?php foreach($countries as $coun) { ?>
            <option value="<?php echo $coun['Tariff']['countryslug']; ?>"><?php echo $coun['Tariff']['countryname']; ?></option>
        <?php } ?>
        <input type="submit" value="Submit" />
    </select>
</form>

在我的控制器文件中,我正在使用它:

$countries = $this->Tariff->find('all', array('conditions' => array('Tariff.gsmid' => '1')));
$this->set('countries', $countries); 

if (!isset($_POST['countryselected'])) {

} else {

    $countryselect = $_POST['countryselected'];

    $tarcounselect = $this->Tariff->find('first', array('conditions' => array('Tariff.countryslug' => $countryselect)));
            $this->set('tarcounselect', $tarcounselect); 
}

干杯!

1 个答案:

答案 0 :(得分:1)

如果使用Cake,则不应手动构建表单和select,而应使用Cake FormHelper。然后它会自动保留所选国家/地区:

控制器:

$this->set('countries', $this->Tariff->find('list', array('conditions' => array('Tariff.gsmid' => '1'), 'fields' => array('countryslug', 'countryname')))); 

查看:

<?php
echo $this->Form->create();
echo $this->Form->select('Tariff.countryslug', $countries);
echo $this->Form->end(__('Submit'));
?>

然后在控制器中检索所选国家/地区:

if($this->request->is('post'))
{
  $countryslug = $this->request->data['Tariff']['countryslug'];

}