早上好,
我使用zend框架(php),我在var_dump
中看到发送POST请求后选项的值。
代码:
<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 field.Help!
答案 0 :(得分:0)
我认为您的Application_Form_Hotel_Costs
继承自Zend_Form
,并且您在Zend_Form_Element
或init()
方法createForm2()
中向表单添加了一些Application_Form_Hotel_Costs
{1}}。然后,您应该在收到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 Framework Manual在这个主题上有一个很好的Form Quickstart Tutorial。
P.S。控制器操作中不应该var_dump()
值。相反,您可以将这些值传递给您查看并正确显示它们。