CakePHP Overriding DS - PullRequest
       2

CakePHP Overriding DS

2 голосов
/ 04 ноября 2010

Я пытаюсь переопределить DS, чтобы использовать «/» вместо «\» на моей машине с Windows Dev.Причина этого в определенном javascript, он использует DS торта для некоторого вызова ajax.

Например:

var data = '<?php echo 'image' . DS ?>';

Это проблема, так как javascript принимает \ как escape-символ, поэтомуJS становится

var data = 'image\';

Любой свет на это приветствуется, спасибо!

РЕДАКТИРОВАТЬ: Я, вероятно, должен выпустить больше информации об этом = /

Я пытаюсьразработать приложение локально на моей машине с Windows.Теперь веб-приложение предполагает, что разработчик работает под Linux, поэтому предыдущие разработчики использовали php DS повсеместно.Конечно, я мог бы просто изменить эти DS на / которые, вероятно, никому не повредят.Но для приложения с тысячами файлов, вероятно, лучше этого не делать, поэтому я думал о переопределении DS для моей собственной локальной рабочей копии.Приведенный выше пример - это всего лишь небольшой фрагмент, показывающий, чего я пытаюсь достичь, а не фактический используемый код.

Но не берите в голову, я просто буду использовать ZWAMP и буду на моемпуть.Спасибо за ответы: D

Ответы [ 4 ]

7 голосов
/ 04 ноября 2010

Ты не должен этого делать. DS - это разделитель каталогов, который нужно оставить как есть, ну и разделитель каталогов. Который является '/' на Unix и '\' на машинах MS.

В вызовах AJAX всегда используйте «/». Для этого вам не нужна никакая переменная: разделитель в URL-адресах всегда равен «/», вы можете просто ввести его в строковый литерал. (Даже если ваш URL начинается с файла: /// ...)

Какой JS использует PHP DS? Это не имеет смысла для меня.

2 голосов
/ 04 ноября 2010

На самом деле вы можете смело определять DS для '/'. Windows все равно распознает это. Например, окна будут обрабатывать c:/windows/system так же, как c:\windows\system. Даже окна распознают, если вы напишите c:\windows/system.

Итак, замените определение DS в вашем app / webroot / index.php с:

if (!defined('DS')) {
    define('DS', DIRECTORY_SEPARATOR);
}

до

if (!defined('DS')) {
    define('DS', '/');
}
0 голосов
/ 04 ноября 2010

Возможно, стоит попробовать \\

0 голосов
/ 04 ноября 2010

краткая форма DS DIRECTORY_SEPARATOR, которая является предопределенной константой в PHP.Это означает, что PHP-среда настроила его для вас, поэтому, если вы находитесь в Windows, это будет «\», если ваш код работает в среде * nix, тогда это будет «/»посмотреть также на следующий форум:

http://www.talkphp.com/general/2487-directory_separator-not-necessary.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...