这是" Zend Framework 2.0 by Example"由Krishna Shasankar V,我目前正在努力。我使用的是ZF版本2.3.2。我在一个用户目录中的独立安装中运行它,这似乎是一个相当不寻常的设置。我搜索了所有关于irc的#zftalk:freenode。没有回应。这是在Ch。 3,第42页。这是登记表的一部分。我已经找到了Zend 2框架形式助手的许多其他用法示例,就我所见,这并没有明显偏离它们:
<?php
$form = $this->form;
$form->prepare();
$form->setAttribute('action', $this->url(NULL, array('controller'=>'Register', 'action' => 'process')));
$form->setAttribute('method', 'post');
echo $this->form()->openTag($form);
?>
当然,这是一种观点。
问题是该行:
$form->setAttribute('action', $this->url(NULL, array('controller'=>'Register', 'action' => 'process')));
导致表单的action属性(和其他)具有斜杠和〜字符的html特殊字符代码,这使得表单不可提交:
<form action="/~zend2test/users/Register/process" method="post" name="Register" enctype="multipart/form-data" id="Register">
我将视图源修改为此以检查问题是否是url()返回的字符串:
$action = $this->url(NULL,array('controller'=>'Register', 'action' => 'process'));
echo $action;
$form = $this->form;
$form->prepare();
$form->setAttribute('action', $action);
$form->setAttribute('method', 'post');
echo $this->form()->openTag($form);
这导致了这个输出:
/~zend2test/users/Register/process
<form action="/~zend2test/users/Register/process" method="post" name="Register" enctype="multipart/form-data" id="Register">
$ action字符串的输出是正确的。这就是形式行动应该是什么。
我还回显了$ form-&gt; getAttribute(&#39; action&#39;),它输出正确的,未编码的字符串。
所以似乎是opentag()方法正在添加特殊字符代码。我怎么能阻止它呢?我已尝试静态设置$ action字符串,但结果相似。我试着静静地设置它离开&#34;〜&#34;关闭。它仍然转换了&#34; /&#34;字符。我正在处理的示例应用程序中有另一种形式存在同样的问题。我尝试过使用htmlspecialchars_decode()但没效果。
答案 0 :(得分:0)
这不是问题。表格还有其他问题。如果其他人有兴趣,正如bitWorking所说,请参阅https://github.com/zendframework/zf2/issues/6461