CakePHP AJAX城市/州下拉人口

时间:2015-01-14 23:07:15

标签: php jquery ajax cakephp

我正在开发一个带有城市/州下拉框的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>

有关正确实施此代码的任何建议吗?

谢谢!

0 个答案:

没有答案