#php #javascript #smarty
#php #javascript #smarty
Вопрос:
через stackoverlfow и Google я нашел много вещей для этого и много жалоб, и в основном все. следовательно, я должен быть совершенно глупым, чтобы добиться этого, но я хочу, чтобы мой smarty не анализировал мой javascript.
Каким-то образом он это делает. Как указано в документации: {literal}{/литерал} экранирует блоки от анализа js. Тем не менее, это работает нормально. Например, этот шаблон:http://pastebin.com/nfM1S1D8
Он работает так, как должен… НО
все, что когда-либо написано в этих вещах, полностью анализируется и игнорируется сверху донизу. Я мог бы написать 100 раз {literal} в этом файле, и это не вызвало бы ни малейшего беспокойства. И дело не только в этом. Также мои файлы jquery142min и jqueryui1812min уничтожаются этой умной штукой. Я больше не могу использовать какие-либо материалы jquery:(((
Может кто-нибудь, пожалуйста, сказать мне, как я могу заставить smarty не заботиться о целом файле? Я не собираюсь вставлять файл jQueryUI только для того, чтобы показать, что он выглядит следующим образом: {literal} код пользовательского интерфейса jquery {/literal}
Поверьте мне, ребята, я пробовал это с
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
Но это работает не так хорошо — и ДА, я удалил кэш, который не существует, поскольку я не кэширую, и ДА, я удалял скомпилированные просмотры каждый раз!
Итак, вы видите, что я, должно быть, слишком глуп, чтобы решить это здесь, но я надеюсь, что у кого-то еще есть ответ на это.
PS: структура и код smarty:http://img560.imageshack.us/f/smarty.png /
@edit: «Файл js будет вызываться со ссылкой на файл PHP, который вызывает шаблон . Путь будет соответствовать не тому, где находится шаблон smart y, а тому, где находится вызывающий php-файл.»
Ко мне это не относится, поскольку я могу открыть после синтаксического анализа файлы js
Комментарии:
1. Почему вы вообще анализируете уменьшенные файлы Javascript сторонних производителей? Просто так, черт возьми?
2. Я этого не хочу. Это просто происходит, когда ничего не работает? Я не знаю, почему это происходит.
3. У меня вообще нет никакого опыта работы со Smarty, вы уверены, что используете его правильно?
4. честно говоря, я не знаю, поскольку меня никогда по-настоящему не заботил smarty. Каким-то образом он отлично работает на моем сервере Linux, но не на моем ПК с Windows. Это безумие. Я проверил права доступа к файлам, я позаботился о путях, поскольку я использую «DIRECTORY_SEPERATOR», а не / или и это просто сводит меня с ума здесь…
5. Вы должны удалить свой скрипт и стиль includes из {literal}.
Ответ №1:
Я не уверен, что с вами происходит, но вы делаете неправильно, но я дам вам несколько основ
вам не нужно
{literal}.... {/literal}
чтобы включить файл, пример
<script type="text/javascript" src="{$prefix}js/jquery.form.2.64.js"></script>
НЕ ПОМЕЩАЙТЕ ТЕГ LITERAL В ЗАГРУЖЕННЫЕ JS-ФАЙЛЫ, IE ВЫЗОВЕТ ПРОБЛЕМЫ С ВАШИМ JAVASCRIPT
но если бы я хотел включить, скажем, swfobjec, я бы сделал это следующим образом
{literal}
<script type="text/javascript">
var params = { allowScriptAccess: "always", wmode: "transparent"};
var atts = { id: "myytplayer"};
swfobject.embedSWF("http://www.youtube.com/v/{/literal}{$youtube_id}{literal}amp;amp;enablejsapi=1amp;amp;playerapiid=ytplayeramp;amp;hl=enamp;amp;fs=1amp;amp;rel=0amp;amp;autoplay=0","ytapiplayer", "689", "400", "8", null, null, params, atts);
</script>
{/literal}
то, что вы не извлекаете выходные данные файлов, изменяет ваши назначения phtml следующим образом
$smarty->assign('bodyCnt',$smarty->fetch(APPLICATION_PATH . DS . "view" . DS .$controller . DS . $action . ".tpl"));
пожалуйста, обратите внимание, что я изменил имя файла на «.tpl» у вас не должно быть никакого php в ваших файлах tpl, в этих файлах должны быть только html и smarty
если вы получаете пустую страницу, есть пара вещей, которые могут происходить
- у вас синтаксическая ошибка в вашем PHP-файле… проверьте свой php
-
вы не предоставляете smarty правильное расположение некоторых или всех ваших файлов шаблонов
$smarty->display('index.tpl'); // will display a tpl file
Комментарии:
1. Спасибо за ваш ответ @mcgrailm — Взгляните на мой первоначальный пост, там есть ссылка на мою структуру папок. Это вы можете видеть с левой стороны в моей IDE. layout.phtml ‘code'{включить файл = $ header} {включить файл = $ bodyCnt} {включить файл = $ footer}’code’ Это исходный код из браузера, когда я открываю свой «индекс»: pastebin.com/95WejcYL Если вы посмотрите внизу после строки 300, вы увидите, как я включаю свои js-файлы. Тем не менее, он загружает файл. Я довольно часто читал, что путь относится к моему пути компиляции php из smarty. Но, похоже, это не так, поскольку я могу их открыть.
2. я пытался загрузить js-файлы без smarty в конце и в начале моего index.php файл, который загружает мой фреймворк. но эти решения также не сработали… Я всегда удалял соответствующие файлы и загружал свой веб-сайт с помощью «shift» reload, чтобы снова загрузить все ресурсы. Ничего не изменилось… очень, очень странно
3. Я только что увидел это после того, как вы написали комментарий 😉 Но он все еще не работает. Я настраивал его, поскольку я не могу {включить файл = $ bodyCnt»} Я изменил его на {$ bodyCnt}, поскольку в противном случае я бы получил ошибку. Однако это ничего не меняет. Редактировать: я также сделал это с файлом верхнего и нижнего колонтитулов!
4. Ошибка, отображаемая в командной строке: Uncaught SyntaxError: Недопустимое регулярное выражение: отсутствует / Поскольку у меня есть {literal} в начале моего script.js файл и в конце {/литерал}. Мне почему-то это нужно, причина этого в том, что в противном случае я получаю пустую страницу, но могу видеть исходный код.
5. @Richard Я отредактировал свой пост. вы никогда не должны помещать код smarty в файл js, если вам нужна переменная smarty в вашем js, возможно, будет лучше поместить этот фрагмент js в phtml.
Ответ №2:
Я нашел проблему. Мне очень жаль smarty. Smarty работает нормально, и я полагаю, что вначале все работало нормально.
Проблема была / есть в моем script.js файл.
Что я сделал, чтобы выяснить это: 1-й я создал резервную копию моего script.js файл. 2-й я убедился, что кодировка файла равна utf-8 is. 3-й я создал форматировщик в моей Zend Studio для форматирования всего файла после того, как он был немного перепутан. 4-й — Пока это все еще не сработало. 5-й — Я удалил все — Это сработало — но, очевидно, никакого javascript, поскольку ничего не вызывалось. 6-я — я добавил свою функцию document.ready из jquery — снова не сработало 7-я — я удалил .ready и попробовал ее с каждой отдельной функцией. — После этого я был уверен, что речь идет о функции .ready 8th — Я разделил свою функцию ready и затем нашел следующую строку, которая вызвала проблему: [code]google.load(‘search’, ‘1’, { язык: ‘ru’, стиль: google.загрузчик.темы.МИНИМАЛИСТИЧНЫЙ } );[/code]
Я хотел бы поблагодарить @mcgrailm за его усилия. И, наконец, я надеюсь, что, хотя это всего лишь вопрос «отладки» файла js. Я надеюсь, что кто-то, кто сталкивается с такой же проблемой, получает небольшую идею для решения своей собственной проблемы.