我网站上提交的表单会返回一组可通过
访问的请求数据$data = $this->getRequest();
这种情况发生在收集数据的控制器中,然后将此数组传递给我的模型以便放置/更新到数据库中。
这是问题所在。如果我想操纵该数组中的某个值,该怎么办?以前我会提取每个值,将它们分配给一个新的数组,所以我可以处理我需要的那个。像这样:
$data = $this->getRequest();
$foo['site_id'] = $data->getParam('site_id');
$foo['story'] = htmlentities($data->getParam('story'));
然后我会将$ foo数组传递给模型,以便将数据放入/更新到数据库中。
我正在做的就是操纵那一个值('story'
param),因此提取每个值并重新分配它似乎是浪费,所以我可以这样做。此外,它不太灵活,因为我必须按名称显式访问每个值。将整个请求传递给模型然后去除数据库不需要的任何内容会更好。
你会怎么做?
答案 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路由。您可以创建代码以将其与模型连接,并从控制器中抽象出所有这些。但是在一天结束的时候,如果你需要对你的一个输入做一些特别的事情,那么你必须在某处编写代码。