从控制器到表单获取值

时间:2009-11-19 17:11:46

标签: php zend-framework zend-form

我正在使用PHP Zend Framework。

如何通过以下方式获取控制器发送的值:

$ infoForm =阵列(
//我从数据库中获取这些值 'idCity'=> $ idCity, 'idRestaurant'=> $ idRestaurant

);

$形式 - >填充($ infoForm);

我在Dojo_Form中获取信息

$ city = new Zend_Dojo_Form_Element_FilteringSelect('idCity');

但是通过idCity,我要去DB并更新FilteringSelect('idRestaurant')以查看该城市的餐馆

如何查看$ form-> populate($ infoForm)发送的变量的值;在形式?

我在表单中尝试了$ this-> getvalue('idCity'),但这似乎仅在返回控制器时获取值。我想检查值idCity然后生成FilteringSelect('idRestaurant')。

::更好地解释

我有:我有: 控制器(扩展Zend_Controller_Action)

模型(Zend_Db_Table_Abstract) - >访问数据库的功能

表单(扩展Zend_Dojo_Form) - >创建from ::我想在这里看到值!

查看(我可以查看表单)

我从控制器中的数据库中获取值,然后我将它们发送到Form with $ form-> populate($ infoForm); 我希望看到来自控制器的值来相应地生成表单

4 个答案:

答案 0 :(得分:0)

您可以像这样获得表单'的值:

$valueArray = $form->getValues();

然后$ valueArray会像:

array(
    'elementName1' => 'value1',
    'elementName2' => 'value2',
    ...
);

...但我可能误解了这个问题,如果是的话,抱歉!

答案 1 :(得分:-1)

您可以设置$ this-> view-> varName来反馈该值,以便表单可以看到它。

例如,在控制器(动作)中:

$this->view->myVar = $this->getRequest()->getParam['myVar'];

然后在表格中请求:

<?= $this->myVar ?>

答案 2 :(得分:-1)

我不熟悉Zend_Dojo甚至Dojo,但本身但经过一些研究后我认为你的控制器应该有类似的结构:

public function myAjaxAction()
{
    if ($this->getRequest()->isXmlHttpRequest()) // if this is an ajax request
    {
        $this->_helper->viewRenderer->setNoRender(); //ajax call, so do //not render
        $jsonData = *your data in json format that will be passed back to the form*
        $this->getResponse()->appendBody($jsonData); // _response is the Response object                                                //that you are appending data to
    }
}

上面的代码是基于以下链接的简化版本。有关详细信息,请参阅该网站。请注意,使用的版本是1.6,但它可以给你一个更好的主意。 消息来源:http://blog.midstride.com/2008/08/26/integrating-ajaxdojo-into-the-zend-mvc-in-8-steps/

答案 3 :(得分:-1)

zend表单元素应该附加一个id,然后将它们添加到表单中,您可以使用它来引用它们 在你的情况下,它应该是:

$form->idCity->getvalue();