Var_dump返回null ...为什么?

时间:2014-09-09 08:37:05

标签: php zend-framework var-dump

早上好, 我使用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!

相同

1 个答案:

答案 0 :(得分:0)

我认为您的Application_Form_Hotel_Costs继承自Zend_Form,并且您在Zend_Form_Elementinit()方法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()值。相反,您可以将这些值传递给您查看并正确显示它们。