我有一个页面(视图),我想从这个页面(视图)传递一些参数到控制器(我将生成表格等...)。我如何将一些参数从视图传递给控制器?
我知道一种方法:链接GET参数(?foo = bar& ..)但这样用户可以看到他的参数。可以通过POST传递吗?怎么样?
很多。
答案 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 ( '钥匙');