Batyabest 13 октября 2014 1 16
Здравствуйте.
Возможно ли выполнить php код в чанке? Думаю, что нет. Но возникла ситуация, когда у меня в срипте JS нужно получить переменную из PHP.
В связи с чем делаю такую конструкцию:
var a=[<=implode(",",$array)?>];

Но в чанке на не работает.
Возможно ли как-то передать значение в чанк?
Переменная a нужна в теле функции, как быть?

Кусочек кода там не вставился:

 
                        
                        
                        
                        
                            
                    
16 комментариев
s
sasha-freez 13 октября 2014г в 17:40 #
Как быть учить modx.
В чанке можно вызвать сниппет.
Создаешь сниппет:
data_arr

туда пишешь php код
в конце return нишь переменную с полученными данными
return;

вызываешь в чанке:
var a=[[[!data_arr]]];

Fi1osof1
Fi1osof 13 октября 2014г в 17:42 #
Да, можно так. Только вот так: var a=[[!data_arr]]; (думаю просто опечатка)
B
Batyabest 13 октября 2014г в 19:12 #
Вот такой кусочек кода, Мне нужно вставить var a = Значения из результатов работы скрипта-обработчика (массив чисел). Вариант, который закомментирован - это работает в просто php файле. А вариант ниже не работает. Что неправильно пишу?
s
sasha-freez 13 октября 2014г в 19:14 #
Сниппет это просто php и работает по типу как файлы копай в эту сторону.
Fi1osof1
Fi1osof 13 октября 2014г в 17:40 #
Нет, в чанке ничего такого нельзя, на то он и чанк. Но у вас же смарти-шаблонизация, нет? Можете не чанк использовать, а перекинуть это в сам шаблон и в нем уже выполнить {implode(',', $array)}
B
Batyabest 13 октября 2014г в 18:44 #
Я сначала все запихал в сниппет и вызвал его на странице. Но после выполнения кода выводится запись return; 1 Откуда она берется ума не приложу.
Fi1osof1
Fi1osof 13 октября 2014г в 19:30 #
Выложи на гистхаб листинг всего сниппета и вызов его в чанке/шаблоне.
B
Batyabest 13 октября 2014г в 19:55 #
http://jsfiddle.net/dk2brm8w/
Сейчас вот в таком варианта вроде бы работает, но помимо всего еще выводится на экран, а мне этого не нужно.
Как тогда выделить кусочек кода, чтобы на экран не выводился, а в чанк передавал значение?
Fi1osof1
Fi1osof 13 октября 2014г в 19:58 #
Попробуйте в сниппете вот так:
$arr = implode(",",$array);
return "[{$arr}];";

А лучше вот так:
return json_encode($array)
B
Batyabest 13 октября 2014г в 20:07 #
Первый вариант как надо, но выводит результат строкой в месте вызова сниппета. А как просто передать значение без вывода?
Fi1osof1
Fi1osof 13 октября 2014г в 22:35 #
но выводит результат строкой в месте вызова сниппета
Открою вам тайну: сниппет и возвращает строку, и ничего кроме строки. То есть или выполняете в нем return $result, и его он и возвращает, или не возвращает ничего более.
А как просто передать значение без вывода?
А вот этот вопрос вообще не понятен. Что надо вообще? Передать из чанка что-то в сниппет в качестве параметра? Все как обычно: [[!snippet?foo=[[+foo]] ]]. Это если в чанке.
И да, $_POST в чанке вы не передадите параметром сниппету. В Смарти-шаблоне можно. {$smarty.post.foo}
A
AlOshka 14 октября 2014г в 05:25 #
Беда..

Хоть какое-то представление имеется о том, как связан фронтенд с бекендом? И как создаются переменные в js?
A
AlOshka 14 октября 2014г в 05:27 #
Хм, код вырезался

< script >
window.blablabla = [[!snippet]];
< /script >


p.s. на всякий случай - пробелы в телах надо убрать
A
AlOshka 14 октября 2014г в 05:27 #
*тегах
Fi1osof1
Fi1osof 14 октября 2014г в 12:39 #
Вот именно, беда... Поэтому когда я вижу такие пробелы, я и советую забросить ShopModxBox. Это же не так, что просто поставил и все (как большинство простейших модулей). Тут хочешь не хочешь, а программировать приходится. И что делать, когда даже элементарных знаний не хватает? Люди только-только на трехколесном велосипеде научились кататься, и уже хотят в ралли участвовать.
Tramp13571
Tramp1357 13 октября 2014г в 23:32 #
попробуй в начале сниппета написать <php
Tramp13571
Tramp1357 13 октября 2014г в 23:33 #
попробуй в начале сниппета написать
<php
Tramp13571
Tramp1357 13 октября 2014г в 23:34 #
знак вопроса почему-то не выводится )
Fi1osof1
Fi1osof 14 октября 2014г в 00:00 #
Потому что <? - это как бы начало тега. Такой тег не разрешен, поэтому он вырезается методом strip_tags(). Надо будет доработать обработку запросов...
V
Vadiok 14 октября 2014г в 08:44 #
Возможно ли как-то передать значение в чанк?

В чанк значение передается также, как и в сниппет:
[[!chunkName? &a=12345]]
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.