Zend框架 - 如何从请求对象
甲提交了关于我的网站表格修改单个参数返回请求的数据的数组,它是与Zend框架 - 如何从请求对象
$data = $this->getRequest();
这发生在采集到的数据,然后控制器可访问的将此数组传递给我的模型,以便将其放入/更新到数据库中。
这是问题所在。如果我想操作该数组中的某个值,该怎么办?以前我会提取每个值,将它们分配给一个新的数组,以便我能够处理所需的数据。像这样:
$data = $this->getRequest();
$foo['site_id'] = $data->getParam('site_id');
$foo['story'] = htmlentities($data->getParam('story'));
然后我将$ foo数组传递给模型,以便将数据放入/更新到数据库中。
我所做的只是操纵那一个值('story'
param),因此看起来像浪费一个东西,然后重新分配,这样我就可以做到这一点。另外,它不够灵活,因为我必须按名称显式访问每个值。将整个请求传递给模型然后去掉数据库不需要的东西会更好。
你会如何做到这一点?
再次编辑:再看看你的问题我在这里讨论的内容都在控制器中进行。你的表单的行动将落地。
那么你有几个选项。
首先$_GET
仍然存在于ZF中,因此您可以访问它。
二有:
$myArray = $this->_request->getParams();
或
$myArray = $this->getRequest()->getParams();
WICH将返回所有PARAMS在阵列中,而不是一个接一个。
第三,如果形式张贴您有:
$myArray = $this->_request()->getPost();
至极的作品,如果用某种形式张贴$this->_request->isPost()
至极返回true。
关于访问所有在你看来,你总是可以只在控制器:
$this->view->myArray = $this->_request->getParams();
编辑:好吧,我教你的意思是不是视图模型。我想我不明白这个问题的一部分。
如果你想对付你的模型只是内部发布数据:
$MyModel = new Model_Mymodels();
$data = $this->_request->getParams();
$data['story'] = htmlentities($data['story']);
$myModels->SetItAll($data);
然后你的模型内创建SetItAll()函数(一个更好的名字),并处理它那里。
编辑:哦等等!我知道了。你讨厌用你的技术逐个输入你的输入。那么我告诉你如何访问这些数据应该简化你的生活。
编辑: 如果参数确实来自表单,那么始终存在Zend_Form路由。您可以创建代码将其与您的模型连接,并从控制器中抽取所有这些代码。但是在一天结束时,如果你需要为你的输入做一些特殊的事情,那么你必须在某个地方编码。
我很困惑 - 模型(s)应该无法访问/不应该关心请求对象... – 2010-09-14 00:13:43
请求由控制器处理,而不是模型。它获取发布的数据,然后将其发送到模型,以便它可以在数据库中更新。所有上面的代码都在控制器中,模型只执行'$ model-> update($ data);' – Lothar 2010-09-14 01:03:16