Мне нужно создать ссылку с диалоговым окном подтверждения Javascript, используя метод link_to()
Symfony.Текст диалога подтверждения получает часть своего содержимого из записи базы данных:
<?php echo link_to( "click here", 'category/delete?id='.$id, array( 'confirm' => 'Are you sure you want to delete the category: '.$category->getName().'?' ) ) ?>
Но если запись базы данных содержит single quote
, диалог подтверждения не работает, потому что сгенерированный JS окруженодинарные кавычки.Так что, если у меня есть категория под названием «Статьи Джона», сгенерированный JS начинается следующим образом:
<a onclick="if (confirm('Are you sure you want to delete the category: John's Articles?')) { var f = document.createElement('form'); f.styl.... etc... "
Итак, одиночная кавычка там приводит к получению подтверждения, и т.д ...
В любом случае, я думал, что просто запустил бы $category->getName()
- addslashes()
, но это не добавило косых черт ... Я также попытался заранее сохранить имя категории в виде отдельной переменной и добавить к ней косые черты.Но это ничего не добавило.Затем я начал смотреть на экранирующие методы Symfony и нашел такие методы, как esc_entities()
, но они привели к тому, что текст выглядел как John&#039;s Articles
.
Что мне делать?Все, что я хочу сделать, это добавить одну косую черту перед одинарными кавычками в этой строке.Я никогда не пробовал str_replace("'","\'",$category->getName())
, но ЭТО даже ничего не делал.Я могу создать свою собственную базовую строку в моем шаблоне, например Alex's Test
и addslashes()
.Именно к этому значению из базы данных я не могу добавить косые черты.
Когда я смотрю на значение в базе данных, оно выглядит как John's Articles
.Там нет специальных символов или закодированных символов.
Что мне здесь не хватает?
ОБНОВЛЕНИЕ
Я пробовал следующий код со следующимрезультаты:
echo $category->getName()."<br/>";
echo addslashes($category->getName())."<br/>";
$tmp = $category->getName();
echo addslashes($tmp)."<br/>";
$tmp = addslashes($category->getName());
echo $tmp."<br/>";
$tmp = "Testing's the Testing";
echo addslashes($tmp)."<br/>";
$tmp = str_replace("'","\\'",$category->getName());
echo $tmp;
Результаты:
John's Articles
John's Articles
John's Articles
John's Articles
Testing\'s the Testing
John's Articles
Значения из базы данных просто не будут добавлять к ним слеши ...