zend框架:如何将参数从视图传递到控制器

时间:2011-01-13 16:15:31

标签: zend-framework

我有一个页面(视图),我想从这个页面(视图)传递一些参数到控制器(我将生成表格等...)。我如何将一些参数从视图传递给控制器​​?

我知道一种方法:链接GET参数(?foo = bar& ..)但这样用户可以看到他的参数。可以通过POST传递吗?怎么样?

很多。

3 个答案:

答案 0 :(得分:3)

要将POST变量传递给Zend Framework应用程序,只需提交POST请求即可。您可以通过将表单提交到绑定到控制器操作的URL或通过AJAX请求来执行此操作。

在控制器操作内部工作时,使用以下命令获取POST变量:

// for the whole POST array
$this->getRequest()->getPost();

// for a specific variable
$this->getRequest()->getPost('var');

同样有用的是,处理表单时要确定请求是否实际上是POST操作:

if ($this->getRequest()->isPost()) {
  // process form
}

答案 1 :(得分:1)

您可以使用Zend_Session将变量从请求传递到请求,而不在视图中公开它们的值。将传递给客户端的唯一事情是会话ID,而不是任何会话数据。

所以理论上你可以在你的视图文件中设置会话中的值(你的phtml模板中的PHP块不会向客户端呈现任何内容),然后检索这些值后续的控制器动作。

答案 2 :(得分:1)

如果您想通过表单发送数据,上面的答案是正确的..如果您想通过网址发布,那么您需要使用zend路由器 步骤1:在包含内容的应用程序文件夹中创建routes.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<routes>
    <manual>
        <route>/foo/bar/:key</route>
        <defaults>
            <controller>yourController</controller>
            <action>YourAction</action>
        </defaults>

    </manual>
    </routes>

步骤:2

在你的boostrap.php中加上这个,

protected function _initRoutes()
            {
                $routefile = new Zend_Config_Xml(APPLICATION_PATH.'/routes.xml');
                $router = Zend_Controller_Front::getInstance()->getRouter();
                $router->addConfig($routefile);
                return $router;


            }

多数民众赞成......当www.eg.com/foo/bar/5形式的网址出现时,您可以通过这种方式获取YourController中的值5,Youraction $ this-&gt; _request-&gt; getParam ( '钥匙');