Var_dump返回null..为什么?


Var_dump return null...why?

早上好,我使用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_CostscreateForm2()方法中向表单添加了一些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()值。相反,您可以将这些值传递给您的视图,并在那里正确显示它们。