Как заполнить выбор с помощью Jquery View Helper и JSON (ZEND) - PullRequest
0 голосов
/ 17 мая 2011

Я знаю, что у Zend Framework есть несколько простых способов сделать это, но я не нашел хорошего ответа или учебника, чтобы делать что-то в соответствии с Zend.

Некоторые ответы показывают, как обойтись без JSON, другие - без Jquery View Helper, и другие без использования Zend Framework.

Все слишком просто У нас есть 2 выбора: группа и подгруппа Когда я меняю группу, подгруппа заполняется.

Это действие:

public function getSubgroupAction(){

    $model = new MySubgroupModel();
    $id = $this->getRequest()->getParam('id');
    $where = "id = $id";
    $data = $model->fetchAll($where)->toArray();

    $json = Zend_Json::encode($data);
    return $json;
}

А это форма

public function init(){

    $model = new MyGroupModel();
    $options = $model->fetchAll();
    // $options receive a query with id and name

    $group = new Zend_Form_Element_Select('group');
    $group->setLabel('Chose Group')
            ->addMultiOptions($options)
            ->setRequired();

    $subgroup = new Zend_Form_Element_Select('subgroup');
    $subgroup->setLabel('Chose Subgroup')
            ->setRequired();
}

Я хочу знать, куда поместить форму запроса getSubgroupAction или что мне нужно сделать, используя помощник вида jquery, чтобы получить ответ json от действия.

Примечание: это не рабочий пример.

Я выражаю благодарность за внимание и помощь. tkzalot.

1 Ответ

1 голос
/ 22 декабря 2011

Сначала в вашем контроллере в init измените ваш контекст на json.

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('getSubgroup', 'json')       
->setAutoJsonSerialization(false) // or true to automatically do it for you
->initContext();

Если вы всегда будете рендерить json, отключите макет.

$this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();

В вашем действии getSubgroup после того, как вы нажали на свою БД и получили нужные данные, закодируйте json и echo.

echo Zend_Json_Encoder::encode($result);

Если вы перейдете к этому действию, в вашем браузере должен отобразиться json.

С помощью ajax вы всегда можете пойти и получить ответ json для отображения в любом месте. Есть другие способы сделать это вместо использования контроллера для отправки ответа json, но это, вероятно, самый простой способ заставить вашу ссылку работать.

...