在Zend Dojo表单上用\ /替换斜杠

时间:2011-07-14 22:29:44

标签: php zend-framework 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的错误吗?

我用Zend FW 1.11.7 1.11.8和1.11.9预览尝试了这个。 我尝试打开和关闭两个魔术引号,结果是一样的。 我正在使用php 5.3.7,因此默认情况下禁用魔术引用。

setStoreParams是Zend Framework中的一种方法,这就是为什么我认为这可能是一个错误。

3 个答案:

答案 0 :(得分:1)

以下是一些链接,描述了您在PHP中看到的一些行为:

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

结果是为PHP 5.4(当前处于alpha状态)创建了一个标志,以便能够不转义斜杠。我还没有看到这是否被移植到5.3分支机构。

正如今天ZendFramework 1的(希望)最终版本一样,您可以根据需要修改Zend_Json :: encode方法。让它查找以'http://'开头的字符串并将斜杠删除。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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