【问题标题】:slashes being replaced by \/ on a Zend Dojo FormZend Dojo 表单上的斜线被 \/ 替换
【发布时间】:2011-07-14 22:29:44
【问题描述】:

我正在这样做: 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 zend-framework dojo


    【解决方案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://' 开头的字符串并去掉斜线。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • Javascript 有一些奇怪的特性,但肯定没有什么比将字符串中的正斜杠解释为除法更奇怪的了。双引号字符串中唯一重要的元字符是反斜杠和双引号。
      • 我更新了我的帖子,但我不记得我在哪里看到的。只是一直处于这种假设之下。无论哪种方式 document.write("1/0") 都与 document.write("1\/0");
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        相关资源
        最近更新 更多