Zend 2框架形式帮助方法openTag将我的动作转换为htmlspecialchars

时间:2014-09-07 13:06:50

标签: php forms zend-framework2

这是" 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="&#x2F;&#x7E;zend2test&#x2F;users&#x2F;Register&#x2F;process" method="post" name="Register" enctype="multipart&#x2F;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="&#x2F;&#x7E;zend2test&#x2F;users&#x2F;Register&#x2F;process" method="post" name="Register" enctype="multipart&#x2F;form-data" id="Register">

$ action字符串的输出是正确的。这就是形式行动应该是什么。

我还回显了$ form-&gt; getAttribute(&#39; action&#39;),它输出正确的,未编码的字符串。

所以似乎是opentag()方法正在添加特殊字符代码。我怎么能阻止它呢?我已尝试静态设置$ action字符串,但结果相似。我试着静静地设置它离开&#34;〜&#34;关闭。它仍然转换了&#34; /&#34;字符。我正在处理的示例应用程序中有另一种形式存在同样的问题。我尝试过使用htmlspecialchars_decode()但没效果。

1 个答案:

答案 0 :(得分:0)

这不是问题。表格还有其他问题。如果其他人有兴趣,正如bitWorking所说,请参阅https://github.com/zendframework/zf2/issues/6461