smarty fetch include на выбранной странице tpl не работает

Мой ajax php, расположенный в maindirexample/actions, вызывает файл tpl на одну папку выше в maindirexample/templates

fetch('../templates/popupMyItems.tpl'); 

Однако это вызывает ошибку

<br /> <b>Fatal error</b>: Uncaught exception 'SmartyException' with message 'Unable to load template file 'list-myItems.tpl' in '../templates/popupMyItems.tpl'

popupMyitems.tpl, кажется, вызывается нормально, однако list-myItems.tpl терпит неудачу (это включено в popupMyitems.tpl)..

{foreach
            from=$uniquecategories item=category name=cat} 
            {if $smarty.foreach.cat.first} {include file="list-myItems.tpl"
            category="{$category|replace:' ':''}" active="true"} 
            {else} {include
            file="list-myItems.tpl" category="{$category|replace:' ':''}"
            active="false"} {/if}

{/foreach}

С использованием

{include file="../templates/list-myItems.tpl"}

тоже не получается:

'SmartyException' with message 'Unable to load template file 'list-myItems.tpl' in '../templates/popupMyItems.tpl'' in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ex\libs\sysplugins\smarty_internal_templatebase.php:127 Stack trace: #0 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ex\libs\sysplugins\smarty_internal_template.php(286): Smarty_Internal_TemplateBase-&gt;fetch(NULL, NULL, NULL, NULL, false, false, true) #1 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ex\main\actions\templates_c\07c3452c9173e47b89ab427877861e26b839928c.file.popupMyItems.tpl.php(52): Smarty_Internal_Template-&gt;getSubTemplate('list-myItems.tp...', NULL, NULL, NULL, NULL, Array, 0) #2 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ex\libs\sysplugins\smarty_internal_templatebase.php(180): content_5236279826e113_69075833(Object(Smarty_Internal_Template)) #3 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ex\main\actions in <b>C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ex\libs\sysplugins\smarty_internal_templatebase.php</b> on line

Есть идеи?

Спасибо


person Athanatos    schedule 15.09.2013    source источник


Ответы (1)


Вам также необходимо включить его из ../templates/. Smarty ищет включения не в «текущей папке», а в include_dir, указанном в настройках. Итак, вы должны сделать что-то вроде этого:

{include file="../templates/list-myItems.tpl" category="{$category|replace:' ':''}" active="true"}
person periklis    schedule 16.09.2013
comment
спасибо, но это не работает, я попробовал и обновил вопрос - person Athanatos; 17.09.2013
comment
@Athanatos - это файл list-myItems.tpl в той же папке, что и popupMyItems.tpl? - person periklis; 17.09.2013
comment
@Athanatos, какое значение имеет ваша переменная template_dir? - person periklis; 17.09.2013
comment
это шаблонный каталог по умолчанию, я не устанавливаю его явно для чего-либо.. Я заставил его, по крайней мере, не выдавать ошибку, вызвав его так: $smarty-›fetch('../templates/popupMyItems.tpl',$ час); примечание: $h - это переменная, установленная на 0, понятия не имею, почему она не падает таким образом... однако она выдает неопределенную ошибку для переменной, которую я определил, и я могу печатать в PHP, и я назначаю ее через smarty .. очень странно. - person Athanatos; 17.09.2013
comment
хорошо, я понял, что происходит, когда я передаю h, уникальные категории не передаются, поэтому условия цикла for (выше) никогда не выполняются, поэтому на самом деле он не проверяет включение, поэтому кажется, что работает .. так что проблема остается - person Athanatos; 17.09.2013
comment
было решено второе включение в остальное foreach, также необходимое ../templates, спасибо - person Athanatos; 17.09.2013