magento escape-строка для JavaScript - PullRequest
6 голосов
/ 23 января 2011

Есть ли вспомогательная функция, которая будет корректно экранировать строку, которая будет отображаться в виде одинарной кавычки строковый литерал JavaScript?

Я знаю jsQuoteEscape, но она обрабатывает только кавычки и не обрабатывает \ n & \ rи т.д.

, поэтому, если моя строка 'line1 \ nlineb' (т.е. две строки с новой строкой между ними)

и я использую

var jsvar='<?php echo $this->helper('myextension')->jsQuoteEscape($mystring); ?>';

, я попаду вотображаемый контент

    var jsvar='line1
line2';

, что является синтаксической ошибкой.

Спасибо, Eyal

1 Ответ

5 голосов
/ 23 января 2011

Да

$string = 'Hello
There';                     
var_dump( Mage::helper('core')->jsonEncode($string) );
var_dump( json_encode($string) );

У меня никогда не было ясно , если это кодирование типов данных необъектной строки в виде строки JavaScript является побочным эффектом кодировки JSON, или еслиэто верно, согласно Hoyle Crockford JSON, поэтому я всегда люблю оборачивать свои строки в объект при передаче их вокруг

$o = new stdClass();
$o->param = 'This is my 
Param';         
$json = json_encode($o);            
echo 'var data = ' . $json . ';' . "\n";
echo 'var jsdata = data.param';

Вот как вы бы справились с этим с помощью JavaScript.Там нет метода, который построен специально для этого.Если вы заинтересованы в том, чтобы увидеть вспомогательные методы, доступные вам из блока, ознакомьтесь с методами в

app/code/core/Mage/Core/Block/Abstract.php        
app/code/core/Mage/Core/Block/Template.php        

, и если вы имеете дело с шаблоном, который является частью блока выше по цепочке,получить его класс, а затем проверить его определение

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