我正在构建一个非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);
}
干杯!
答案 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'];
}