簡體   English   中英

Zend 2框架表單幫助器方法openTag將我的操作轉換為htmlspecialchars

[英]Zend 2 framework form helper method openTag is converting my action to htmlspecialchars

這與我當前正在研究的Krishna Shasankar V撰寫的“ Zend Framework 2.0示例”完全不同。 我正在使用ZF版本2.3.2。 我正在用戶目錄中的獨立安裝中運行此程序,這似乎是非常不尋常的設置。 我已經在google上搜索了所有內容,並在irc:freenode上的#zftalk上進行了詢問。 那里沒有回應。 這是在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-> getAttribute('action'),它輸出正確的,未編碼的字符串。

因此,似乎是添加特殊字符代碼的opentag()方法。 我該如何阻止它呢? 我試過靜態設置$ action字符串具有類似的結果。 我嘗試將其靜態設置為不顯示“〜”。 它仍然轉換為“ /”字符。 我正在處理的示例應用程序中還有另一種形式存在相同的問題。 我嘗試使用htmlspecialchars_decode()無效。

這不是問題。 表格還有其他問題。 如bitWorking所述,如果其他人有興趣,請參閱https://github.com/zendframework/zf2/issues/6461

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM