gpt4 book ai didi

zend-framework - 为什么 Zend_Form::getValues() 不返回 MVC 之外的预期值?

转载 作者:行者123 更新时间:2023-12-01 16:10:47 24 4
gpt4 key购买 nike

我正在使用 Zend_Form(include_path 上的完整库)但不使用 MVC$_POST 值符合预期,但 $form->getValues() 对于 $_POST 中包含正确字符串的键返回 null。我期望 $form->getValues() 返回“fullname”键的有效字符串。表格如下:

class MyForm extends Zend_Form {

public function init() {
$this->setName('myform')
->setAction($_SERVER['PHP_SELF'])
->setMethod('post');

$fullname = $this->createElement('text', 'fullname')
->setLabel('What is your name?');

$this->addElement($fullname);
$this->addElement('submit', 'submit');
}

}

以下是为表单生成的 HTML:

<form id="myform" name="myform" enctype="application/x-www-form-urlencoded" action="/classes_test/index.php" method="post">
<dl class="zend_form">
<dt id="fullname-label">
<label for="fullname" class="optional">What is your name?</label>
</dt>
<dd id="fullname-element">
<input type="text" name="fullname" id="fullname" value="">
</dd>
<dt id="submit-label">&#160;
</dt>
<dd id="submit-element">
<input type="submit" name="submit" id="submit" value="submit">
</dd>
</dl>
</form>

处理过程如下:

$request = new Zend_Controller_Request_Http();
$form = new MyForm;
$form->setView(new Zend_View);
if ($request->isPost()) {
var_dump($_POST);
$data = $form->getValues();
var_dump($data);
if ($form->isValid($request->getPost()) {
...
}
}

这是 $_POST 的 var_dump:

array
'fullname' => string 'My Name' (length=7)
'submit' => string 'submit' (length=6)

这是 $data 的 var_dump:

array
'fullname' => null

为什么“全名”为空?

最佳答案

Zend_Form 不会直接从 $_POST 访问数据,您必须将数据传入。完成此操作的方法之一是通过 isValid () 调用。所以你的问题的答案是 - fullname 为 null,因为表单对象中还没有任何数据。

如果您尝试这样做:

if ($request->isPost()) {
var_dump($_POST);

if ($form->isValid($request->getPost()) {
$data = $form->getValues();
var_dump($data);
}
}

您将得到您期望的结果。

关于zend-framework - 为什么 Zend_Form::getValues() 不返回 MVC 之外的预期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com