Ошибка Smarty: вызов функции-члена get_articlelist_primary () для необъекта

Я вынужден использовать Smarty для проекта, но сервер работает медленно, поэтому я попытался работать с ним локально на MAMP.

Я начинающий, когда дело доходит до Смарти.

Сначала я скачал smarty, затем в index.php для сайта, который я делаю, я создал класс:

class Panel{
public function __construct__(){}
public function get_articlelist_primary(){return array();}
}

Затем я сделал пример:

$panelObj=new Panel();

Сделал мою вещь с Smarty:

require_once("../Smarty-3.1.20/libs/Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = 'views';
$smarty->compile_dir = 'tmp';
$smarty->assign("panelObj",$panelObj);
$smarty->display("index.tpl");

Затем я сделал шаблон, и он не работает. В журнале ошибок PHP написано:

[17-Oct-2014 20:48:38 Europe/Berlin] PHP Fatal error:  Call to a member function get_articlelist_primary() on a non-object in /Applications/MAMP/htdocs/LanderTemplate/tmp/3dd4ab168909a8c2acf37974fa4b15c661cc2857.file.index.tpl.php on line 377

Строка 377 в скомпилированном шаблоне:

if (count($_smarty_tpl->tpl_vars['panelObj']->value->get_articlelist_primary())) {?></div><?php }?>

Написал эту строку в скомпилированном шаблоне, чтобы регистрировать ошибки:

<?php error_log(print_r($_smarty_tpl->tpl_vars['panelObj'],1));

Он вернулся:

[17-Oct-2014 20:48:38 Europe/Berlin] Smarty_Variable Object
(
[value] =>
[nocache] =>
[scope] => 0
[_loop] =>
)

Кажется, что «значение» должно быть равно экземпляру, так как я его назначил, но оно просто пустое. Что может быть причиной этого? Я использую Smarty 3.1.20.

0

Решение

Вы должны убедиться, что вы все делаете хорошо, поэтому, пожалуйста, попробуйте этот код, чтобы убедиться, что у вас есть $panelObj определено в текущей области.

class Panel{
public function __construct(){}
public function get_articlelist_primary(){return array();}
}
$panelObj=new Panel();

var_dump($panelObj);
$smarty->assign("panelObj",$panelObj);
$smarty->display("index.tpl");

И в index.tpl файл:

{$panelObj->get_articlelist_primary()}

Если у вас включена функция error_reporting, вы увидите только уведомление:

object(Panel)#17 (0) { }
Notice: Array to string conversion in ...\templates_c\6a7a7402e26bab6fe66fe3d214cc5fb929376cc9.file.sb.tpl.php on line 34
Array

потому что вы возвращаете массив в этой функции, но, как видите, этот метод класса может быть запущен без каких-либо проблем. Я проверил это в 3.1.19 версия

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]