Php Zend Framework-如何从请求对象修改单个参数

Php Zend Framework-如何从请求对象修改单个参数,php,zend-framework,Php,Zend Framework,我的站点上提交的表单返回一个请求数据数组,可以通过 $data = $this->getRequest(); 这种情况发生在控制器中,该控制器收集数据,然后将此数组传递给我的模型,以便将其放置/更新到数据库中 问题就在这里。如果我想操纵该数组中的一个值,该怎么办?以前,我会提取每个值,将它们分配给一个新数组,以便处理所需的数组。像这样: $data = $this->getRequest(); $foo['site_id'] = $data->getParam('site_i

我的站点上提交的表单返回一个请求数据数组,可以通过

$data = $this->getRequest();
这种情况发生在控制器中,该控制器收集数据,然后将此数组传递给我的模型,以便将其放置/更新到数据库中

问题就在这里。如果我想操纵该数组中的一个值,该怎么办?以前,我会提取每个值,将它们分配给一个新数组,以便处理所需的数组。像这样:

$data = $this->getRequest();
$foo['site_id'] = $data->getParam('site_id');
$foo['story'] = htmlentities($data->getParam('story'));
然后我将$foo数组传递给模型,以便将其放置/更新到数据库中

我所做的只是操纵一个值(
'story'
参数),因此提取每个值并重新分配它似乎是一种浪费,这样我就可以做到这一点。此外,它的灵活性较差,因为我必须通过名称显式访问每个值。最好将整个请求传递给模型,然后处理掉数据库不需要的任何东西


你将如何做到这一点?

再次编辑:再看看你的问题我在这里所说的一切都在控制器中进行。表单的操作将在哪里着陆

你有两个选择

首先,ZF中仍然有
$\u GET
,因此您可以直接访问它

其次是:

$myArray = $this->_request->getParams();

Wich将返回数组中的所有参数,而不是逐个返回

第三,如果表格已张贴,您必须:

$myArray = $this->_request()->getPost();
Wich使用
$this->\u request->isPost()
如果某个表单被发布,Wich将返回true

关于访问视图中的所有内容,您可以始终在控制器中:

$this->view->myArray = $this->_request->getParams();
编辑:对,我教你的意思是视图而不是模型。我想我不明白问题的那一部分

如果要处理模型中的post数据,只需执行以下操作:

$MyModel = new Model_Mymodels();

$data = $this->_request->getParams();
$data['story'] = htmlentities($data['story']);
$myModels->SetItAll($data);
然后在模型内部创建SetItAll()函数(使用更好的名称)并在那里处理它

编辑:哦,等等!我明白了。你讨厌用你的技术一个接一个地分析你的输入。那么,我向你展示的关于如何访问这些数据的内容应该会大大简化你的生活

编辑:
如果参数确实来自表单,则始终存在Zend_表单路由。您可以创建代码以将其与模型接口,并从控制器中抽象出所有这些内容。但是,在一天结束时,如果您需要对其中一个输入执行一些特殊的操作,那么您必须在某个地方对其进行编码。

我感到困惑——模型应该无法访问/不应该关心请求对象……请求是由控制器处理的,而不是模型。它获取发布的数据,然后将其发送到模型,以便在数据库中进行更新。以上所有代码都在控制器中,模型只执行
$model->update($data)+1——如果您确实需要模型中的请求,我想您可以这样做。只有动作控制器才应该真正处理请求。@Billy ONeal是的,我说的是控制器动作。我花了一段时间才明白,他可能是在他的模型中直接访问了所有这些内容。但我发布了一个将数据传递给他的模型的示例。谢谢你的投票!!这一切都发生在控制器中。我只是将最终结果传回模型,以便它可以更新数据库。@rg88我的答案有帮助吗?否则,请编辑您的问题,以便我们能够理解您想要什么:)我做了,但似乎还不清楚?我想通过htmlentities运行各种发布元素之一。因此,在许多已发布的元素中,如何在将数据传递给模型以放入数据库之前,通过htmlentities运行其中一个元素?
$MyModel = new Model_Mymodels();

$data = $this->_request->getParams();
$data['story'] = htmlentities($data['story']);
$myModels->SetItAll($data);