【问题标题】:Var_dump return null...why?Var_dump 返回空值...为什么?
【发布时间】:2014-09-09 08:37:04
【问题描述】:

早上好, 我使用 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 返回空值。为什么?选项值与 db field.Help 相同!

【问题讨论】:

  • Application_Form_Hotel_Costs 类中有什么内容?
  • Application_Form_Hotel_Costs 为页面创建表单..
  • $form 何时被从当前 HTTP POST 请求中接收到的信息所补充?

标签: php zend-framework var-dump


【解决方案1】:

我假设您的 Application_Form_Hotel_Costs 继承自 Zend_Form 并且您在 init()Application_Form_Hotel_CostscreateForm2() 方法中添加一些 Zend_Form_Elements 到表单中。然后,您应该在收到 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()方法验证、过滤并使用来自请求的数据填充表单。因此,在您调用该方法并通过后,您可以从表单中提取有效值。

如果您正确初始化了表单,则将表单传递给视图可以简化您的查看脚本或多或少&lt;?php echo $this-&gt;form; ?&gt;。这样你就可以省略你自己渲染表单的部分,让表单的默认装饰器来完成这项工作。

Zend Framework Manual 在整个主题上都有很好的Form Quickstart Tutorial

附言您不应该在控制器操作中使用 var_dump() 值。相反,您可以将这些值传递给您查看并正确显示它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多