表单无权访问其值。这是正常的吗?

时间:2011-01-24 01:28:15

标签: php zend-framework zend-form

这是我第一次注意到这一点,这让我感到很惊讶。

我有一个带有简单文本元素的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访问更好的方法?

2 个答案:

答案 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肯定是一种选择。