我正在开发一个带有城市/州下拉框的CakePHP应用程序(以防止输入时出现用户错误)。我们有一个名为“城市”的控制器/数据库表,其中包含美国的每个城市以及State,Zip,Lat和Lng。我已经包含了下表的创建代码以供参考。
CREATE TABLE IF NOT EXISTS `cities` (
`zip` int(5) DEFAULT NULL,
`state` varchar(2) DEFAULT NULL,
`city` varchar(16) DEFAULT NULL,
`lat` decimal(8,6) DEFAULT NULL,
`lng` decimal(10,6) DEFAULT NULL
)
对于我的城市控制器(controllers / CitiesController.php),我有两个自定义查找函数来帮助填充下拉列表(通过JSON)
class CitiesController extends AppController {
public function getstates() {
$this->set('states', $this->City->find('all', array(
'fields' => array('DISTINCT City.state'),
'order' => 'City.state ASC',
'group' => 'City.state',
'recursive' => 0
)));
$this->set('_serialize', array('states'));
}
public function getCitiesInState($state) {
$this->set('cities', $this->City->find('all', array(
'fields' => array('City.city', 'City.zip', 'City.lat', 'City.lng'),
'order' => 'City.city ASC',
'group' => 'City.city',
'conditions' => array('City.state = ' => strtoupper($state)),
'recursive' => 0
)));
$this->set('_serialize', array('cities'));
}
}
现在这是我遇到问题的地方。
我试图在另一个模型“Add”方法(views / Facilities / add.ctp)上实现这个。我不确定为下拉列表调用数据的最佳方法。我知道我希望将jQuery onchange事件与状态下拉列表绑定,如https://stackoverflow.com/a/1872282/722617
中所示模型是关联的,“设施”模型有一个“city_id”的外键,它与Cities模型中的城市id相关联。
当前代码只列出了数据库中的所有城市,如下所示:
<div class="form-group">
<?php echo $this->Form->input('city_id', array('class' => 'form-control', 'placeholder' => 'City Id'));?>
</div>
有关正确实施此代码的任何建议吗?
谢谢!