的我新出生的Zend的概念。正在通过zend形式的文档,并不能理解一件事情。有一个与oracle的zend项目,所以我的生活已经搞砸了;-)。我陷入了Zend_Form类的一些基本问题。问题是:当我们设置一个表单并将其重新发布到该动作时,显然会创建新的表单对象,并且我的发布值将像烟雾一样消失。所以如何让他们活着。我得到了$this->getrequest()->getparams()
的替代品,但是在zend文档中,我曾经见过的例子他们都有相同的流程。他们没有使用getparams()
作为选项。让我通过代码来获得非常清晰的想法。Zend的形式工作不正常,无法理解文档
public function indexAction()
{
$this->view->title = 'Welcome to CashTray '; // passing title to view
// creating cashtray mapper object
$cashTrayMapper = new Application_Model_CashtrayMapper();
// search form object
/* It will reset the object, a obvious thing*/
$searchForm = new Application_Form_Cashtray_Search(); // creating search form object
if ($this->getRequest()->isPost()) // post request found
{
var_dump($searchForm->getValues(), $this->getRequest()->getparams());die;
}
else
{
$this->view->form = $searchForm;
// retrieving cashtray list
$this->view->entries = $cashTrayMapper->fetchAll(); // passing form to view
}
}
OUTPUT:
array(2) { ["client"]=> string(0) "" ["offset"]=> string(0) "" }
array(6) { ["controller"]=> string(8) "cashtray" ["action"]=> string(5) "index" ["module"]=> string(7) "default" ["client"]=> string(4) "1001" ["offset"]=> string(3) "214" ["submit"]=> string(6) "Search" }
现在我们可以看到,形式张贴,值是有,但为什么我不能通过$searchForm->getValues();
得到它在示例中他们有$form
代替$searchForm
我不要不认为应该是问题。
在ZF的请求对象,因为你已经注意到提供了不同的方式来存取权限值。 ' - > getParams()'从setParam()','$ _GET'和'$ _POST'这个顺序提取值。 ' - > getPost()'只需从'$ _GET'中的'$ _POST'和'getQuery()'中取出。这些值都没有被过滤。过滤并验证形式的数据与'$形式 - >的GetValues访问()'或'$形式 - >的getValue( 'name_0f_value');''调用后 - >的isValid($数据)'。 – RockyFord 2012-03-23 14:08:38
感谢rocky.I以答复的方式实现了它,但我可能知道为什么会这样吗?因为当我在isValid()之上访问它时,它给出了空值结果,当我在/内部的isValid()之后访问它时,它显示所有值都是正确的。 – 2012-03-23 16:38:19
,因为直到你调用' - > isValid'来抵抗表单对象,'getValues()'数组是空的。只有通过调用' - > isValid'来应用验证和过滤之后,它才会被填充。原始值总是可以通过调用'$ this-> getRequest() - > getPost();'然而这些值未经过验证并且未经过滤。 – RockyFord 2012-03-24 06:25:36