Как сохранить код CSS в переменной PHP для использования с Javascript - PullRequest
1 голос
/ 08 марта 2012

Я разрабатываю продукт, и одним из вариантов, которые я предоставлю, является возможность копировать и вставлять свой собственный код CSS-градиента из надежных источников, таких как ColorZilla .

Как я могу сохранить такой код в объекте PHP (для использования в качестве настроек по умолчанию) и вывести его в коде javascript / jquery, сохраняя при этом программный смысл кода. Я пытался использовать "addlashes ()" безрезультатно.

На данный момент у меня есть:

$default_options = array(
        'header_wrap_grad'          =>          '
                                            background: rgb(169,3,41); /* Old browsers */
                                            background: -moz-linear-gradient(top,  rgba(169,3,41,1) 0%, rgba(143,2,34,1) 44%, rgba(109,0,25,1) 100%); /* FF3.6+ */
                                            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(169,3,41,1)), color-stop(44%,rgba(143,2,34,1)), color-stop(100%,rgba(109,0,25,1))); /* Chrome,Safari4+ */
                                            background: -webkit-linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* Chrome10+,Safari5.1+ */
                                            background: -o-linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* Opera 11.10+ */
                                            background: -ms-linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* IE10+ */
                                            background: linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* W3C */
                                            filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#a90329\', endColorstr=\'#6d0019\',GradientType=0 ); /* IE6-9 */
                                            ',

Затем в тегах, которые я получил:

$('#header-wrap-grad').attr('value', '<?php echo addslashes($default_options['header_wrap_grad']); ?>');

с # header-wrap-grad, являющимся текстовой областью, которую я пытаюсь заполнить кодом css из переменной. Тем не менее, это не работает. Я получаю эту ошибку «Неожиданный токен:» при попытке вывести переменную.

Может кто-нибудь указать мне правильное направление, пожалуйста?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Вы создаете строку JavaScript, поэтому используйте json_encode (и без окружающих кавычек):

$('#header-wrap-grad').attr('value', <?php echo json_encode($default_options['header_wrap_grad']); ?>);
1 голос
/ 08 марта 2012

У вас проблемы с переносом строк внутри строки, они нарушат JS-код.

Вы можете кодировать строку в PHP с помощью rawurlencode и декодировать строку в JS с помощью decodeURIComponent.

$('#header-wrap-grad')
 .attr('value', 
    decodeURIComponent('<?php echo rawurlencode($default_options['header_wrap_grad']); ?>'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...