这是我第一次注意到这一点,这让我感到很惊讶。
我有一个带有简单文本元素的zend_form。
$name = new Zend_Form_Element_Text('name');
$name->setLabel('Name');
$this->addElement($name);
奇怪的是,当我提交表单并尝试读取表单中的值时(我正在进行一些调试,而不是在控制器中),$name->getValue()
不起作用,但直接$ _POST有效。
echo $name->getValue(); //gives blank
echo $_POST['name']; //gives the right value
这是正常的吗?表格怎么没有它的价值?我认为用$ field-> getValue()读取它们比直接访问$ _POST值更好。
第二个问题是,要读取表单中的值,有没有比直接从$ _POST访问更好的方法?
答案 0 :(得分:2)
您需要将数据显式传递给表单,因为ZF不知道从哪里获取它:
if ($form->isValid($_POST)) { // access values }
或
if ($form->isValid($request->getPost())) { // access values }
答案 1 :(得分:1)
没有。坚持使用$_POST
和$_GET
。老实说,我不明白为什么你使用Zend来创建和从表单中获取数据,而使用直接PHP更容易做到这一点。
<?php if( !isset( $_POST['name'] ) ): ?>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
<label for="name">Name:</label> <input type="text" name="name" id="name" />
</form>
<?php else: ?>
Value = <?= $_POST['name'] ?>
<?php endif; ?>
我想这完全符合你的编码风格。我更喜欢上述内容,但如果你想将逻辑与HTML分开,那么Zend肯定是一种选择。