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

时间:2010-09-13 23:26:46

标签: php zend-framework

我网站上提交的表单会返回一组可通过

访问的请求数据
$data = $this->getRequest();

这种情况发生在收集数据的控制器中,然后将此数组传递给我的模型以便放置/更新到数据库中。

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

$data = $this->getRequest();
$foo['site_id'] = $data->getParam('site_id');
$foo['story'] = htmlentities($data->getParam('story'));

然后我会将$ foo数组传递给模型,以便将数据放入/更新到数据库中。

我正在做的就是操纵那一个值('story' param),因此提取每个值并重新分配它似乎是浪费,所以我可以这样做。此外,它不太灵活,因为我必须按名称显式访问每个值。将整个请求传递给模型然后去除数据库不需要的任何内容会更好。

你会怎么做?

1 个答案:

答案 0 :(得分:2)

再次编辑:在你的问题中再看一遍我在这里谈论的内容都在控制器中继续。你的表格行动将落在哪里。

嗯,你有几个选择。

首先,$_GET仍然存在于ZF中,因此您只能访问它。

其次是:

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

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

将返回数组中的所有参数而不是一个接一个。

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

$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路由。您可以创建代码以将其与模型连接,并从控制器中抽象出所有这些。但是在一天结束的时候,如果你需要对你的一个输入做一些特别的事情,那么你必须在某处编写代码。