早上好,我使用zend框架(php),在发送POST请求后,我在var_dump
中看到了select选项的值。
代码:
<div class="entry">
<form action="<?php echo $this->escape($this->form->getAction()); ?>" method="<?php echo $this->escape($this->form->getMethod());?>">
<h2 class="selectVisibility">Seleziona la stagionalità :
<select name="cambiaStagionalita">
<option value="ND"></option>
<?php foreach ($this->seasons as $season) :
$from = new Zend_Date($season['from']);
$until = new Zend_Date($season['until']);
?>
<option value="<?php echo $season['from'];?>"> Dal <?php echo $from->toString(Zend_Date::DAY_SHORT. " " .Zend_Date::MONTH_NAME. " ".Zend_Date::YEAR);?> al <?php echo $until->toString(Zend_Date::DAY_SHORT. " " .Zend_Date::MONTH_NAME. " ".Zend_Date::YEAR);?></option>
<?php endforeach; ?>
</select>
</h2> <div></div><br/>
<input type="submit" name="public" value="Cerca"/>
来自控制器的代码php操作:
$form = new Application_Form_Hotel_Costs();
$form->createForm2($seasons, $rooms, $mealPlans);
var_dump($form->getValue("cambiaStagionalita"));
//exit(0);
Var_dump
返回null,为什么?选项值与db字段相同。帮助
我假设您的Application_Form_Hotel_Costs
继承自Zend_Form
,并且您在init()
或Application_Form_Hotel_Costs
的createForm2()
方法中向表单添加了一些Zend_Form_Element
。然后,当您收到POST请求时,您应该用请求中的数据填充表单。在接收POST的控制器操作中,我会这样做:
$form = new Application_Form_Hotel_Costs();
$form->createForm2($seasons, $rooms, $mealPlans);
if ($request->isPost()) {
$post = $request->getPost ();
if ($form->isValid($post)) { // populates the form with request data
var_dump($form->getValue("cambiaStagionalita")); // extract a valid value from the form
}
}
$this->view->form = $form; //pass the form to the view
表单的isValid()
方法使用请求中的数据对表单进行验证、筛选和填充。因此,在您调用该方法并通过后,您可以从表单中提取有效值
如果表单初始化正确,将表单传递给视图可以简化视图脚本到或多或少的<?php echo $this->form; ?>
。通过这种方式,您可以提交自己呈现表单的部分,并让表单的默认装饰器来完成这项工作。
Zend框架手册在这个主题上有一个很好的Form Quickstart教程。
p.s.控制器操作中不应包含var_dump()
值。相反,您可以将这些值传递给您的视图,并在那里正确显示它们。