За последние 24 часа нас посетили 49878 программистов и 1730 роботов. Сейчас ищут 690 программистов ...

Вопрос по Smarty

Тема в разделе "PHP для новичков", создана пользователем tommyangelo, 4 апр 2010.

  1. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Заранее извиняюсь, если вопрос слишком громоздкий и непонятный, но я уже себе голову с ним сломал.....(((

    Как ясно из темы, применяю шаблонизатор Smarty.
    Мне нужно, чтобы он запускался из корневого каталога, и из каталога /admin. Файлы шаблонов тоже хранятся в двух местах /templates и /admin/templates.
    Сам Smarty лежит в каталоге /libs

    Для работы с этим хозяйством создаю файл smarty_config.php в котором определяю два дочерних класса smarty
    Код (Text):
    1.  
    2. require ('libs/Smarty.class.php');
    3. class MySmarty extends Smarty{
    4.     function MySmarty(){
    5.         $this->Smarty();
    6.         $this->template_dir = 'templates/';
    7.         $this->compile_dir = 'templates_c/';
    8.         $this->config_dir = 'config/';
    9.         $this->cache_dir = 'cache/';
    10.         $this->caching = 0;
    11.         $this->compile_check = true;
    12.         }
    13.     }
    14. class AdmSmarty extends Smarty{
    15.     function AdmSmarty(){
    16.         $this->Smarty();
    17.         $this->template_dir = '../admin/adm_templates/';
    18.         $this->compile_dir = '../admin/adm_templates_c/';
    19.         $this->caching = 0;
    20.         $this->compile_check = true;
    21.         }
    22.    
    23. }
    При использовании класса MySmarty проблем не замечено.

    Класс AdmSmarty используется следующим образом
    Код (Text):
    1.  
    2. $pg = new AdmSmarty;
    3. $pg->assign("form", $a);//$a содержит массив
    4. $pg->display('forms/edit_static_form.tpl');
    При запуске этого хозяйства в браузере появляются нужные мне значения $a, но при этом фоном для их отображения является шаблон index.tpl лежащий в каталоге templates/.
    При переименовании шаблона на index8.tpl в браузер вылазит ошибка
    Насколько я понимаю, смарти пытается скомпилировать этот шаблон...

    Методом проб и ошибок обнаружил, вот что -

    метод display используется только в одном месте - файле index.php. И его аргумент как раз та самая страница index.tpl.
    если аргументом сделать переименованную страницу index8.tpl - ошибка исчезает.
    Не понимаю каким образом метод display класса MySmarty связан с методом display класса AdmSmarty, к тому же объекты находятся в разных файлах, не связанных друг с другом :shock:
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а в index.php управление не передаётся?
     
  3. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    нет, это 2 разных файла, один в корневом каталоге, другой в папке admin.

    Дело в том, что всё работает, т.е. файл который в админке свои функции выполняет. Но при этом компилируется шаблон index.tpl....
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    смарти такие вещи отрабатывает на ура, смотрите, где в коде напутали
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    лан, попробую с нуля переписать....всё равно спасибо за участие.
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    оказывается проблема совсем не в смарти была, а в визуальном html-редакторе SPAW, который немного выше вызывался....

    при выводе редактора на экран вот эта фигня и происходит....почему - для меня загадка)
    в классе редактора есть метод getHtml.
    $a->getHtml(); - ничего не происходит
    echo ($a->getHtml()); - происходит компиляция шаблона index.tpl

    )))) тупняк какой-то если честно)
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    для вывода там есть метод show()
    getHtml() предназначен, чтобы сгенерированный год передать в шаблон
    намёк ясен? :)
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    не, я это понимаю прекрасно - мне и нужно было запихнуть в шаблон))))

    цитата из editor.class.php

    Код (Text):
    1. function show()
    2.   {
    3.     echo $this->getHtml();
    4.   }
    ;-)
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    я вот думаю - может у них со смарти где-то имена переменных перекрываются??, т.к. ни в том ни в другом не заданы области видимости переменных. Просто var и всё...
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Проблема решилась переносом папки со Spaw из корневика сайта на уровень выше.

    Зависимости не уловил....
     
  11. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    млин, застрелиться....

    при переносе на хостинг - снова трабл. Кидаю папку с редактором на уровень выше чем public_html - редактор не подгружает свои же css и js файлы, конфиг и в поле для текста пишет "невозможно отобразить страницу".

    В любую(абсолютно любую, независимо от названия, вложенности, прав доступа) папку внутри public_html - редактор работает нормально, но в поле для редактирования отображается скомпилированный шаблон index.tpl

    Иллюстрация здесь - http://savepic.ru/1078947.jpg

    Риторический вопрос - КАК?
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а как, по-твоему, браузер получит
    , если они лежат вне зоны ответственности веб-сервера?
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Да уж...
    *стесняется*
    Теперь ясно почему на локальном работало....