斜杠被替换为/在Zend Dojo表单



我是这样做的:http://zend-framework-community.634137.n4.nabble.com/How-to-Zend-Dojo-Form-Dependent-Selects-e-g-Country-City-td663650.html

如果我这样做:

$this->view->form->getElement('subtipo')->setStoreParams(array('url'
=> 'http://localhost/~xpete/project/public/info/lookup/tipo/1'));

在生成的html/js上得到这个结果:

subtipo_id = new dojo.data.ItemFileReadStore({"url":"http://localhost/~xpete/project/public/info/lookup/tipo/1"}); 

已被/取代。我有什么办法可以避免这件事吗?这是Zend bug吗?

我在Zend FW 1.11.7、1.11.8和1.11.9预览版中尝试了这个。我尝试了魔术引号和关闭,结果是一样的。我使用php 5.3.7,所以魔法报价是默认禁用的。

setStoreParams是一个方法从Zend框架,这就是为什么我认为这可能是一个错误。

下面是一些描述PHP中一些行为的链接:


http://www.php.net/manual/en/function.json-encode.php # 100679https://bugs.php.net/bug.php?id=49366

结果是为PHP 5.4(目前处于alpha阶段)创建了一个标志,使其能够不转义斜杠。我还没有看到这是否被反向移植到5.3分支。

今天是ZendFramework 1的最终版本(希望如此),您可以按照自己的意愿修改Zend_Json::encode方法。让它查找以'http://'开头的字符串并去掉斜杠。

这不是bug。通常的做法是转义在双引号中的正斜杠/以避免javascript错误。当Javascript将此写入字符串时,它只会写入http://localhost/~xpete/project/public/info/lookup/tipo/1

您必须使用str_replace("/","",your_string)替换用户界面中的"/"文本。

最新更新