Приветствую всех заглянувших в мой ask. Случилась такая неприятность с моим проектом на PHP, не так давно я начал осваивать Composer и решил заняться подключением шаблонизатора Fenom, на замену своему штатному, работавший по принципу вывода буфера через ob. В общем к проекту я его подключил, вывел свой Layout, но никак не могу вывести Content, наглухо застрял и не знаю, как быть. Жалуется на то, что не может преобразовать массив в строку. Может я конечно тут "накостылил" или того хуже, но все-таки решать проблему как-то нужно. Вот фрагменты кода:
index.php:
define('VIEWS_PATH', ROOT . DS . 'views');
App::run($_SERVER['REQUEST_URI']);
App.class.php:
self::$router = new Router($url);
$controller_class = ucfirst(self::$router->getController()) . 'Controller';
$controller_method = strtolower(self::$router->getMethodPrefix() . self::$router->getAction());
$layout = self::$router->getRoute();
$fenom = Fenom::factory(VIEWS_PATH, VIEWS_PATH.'/cache', array(
'disable_cache' => 'true',
));
$controller_object = new $controller_class;
if (method_exists($controller_object, $controller_method)) {
$content = $fenom->display($controller_object->$controller_method(), $controller_object->getData());
} else {
throw new Exception('meth_not_found');
}
$fenom->display($layout.'.html', compact('content'));
Ну а в Layout'е вывожу переменную в таком виде:
{$content}
Ну и чтобы было более понятней, в старом "шаблонизаторе" все выглядело примерно так:
App.class.php:
if (method_exists($controller_object, $controller_method)) {
$view_path = $controller_object->$controller_method();
$view_object = new View($controller_object->getData(), $view_path);
$content = $view_object->render();
} else {
throw new Exception('meth_not');
}
$layout_path = VIEWS_PATH . DS . $layout . '.html';
$layout_view_object = new View(compact('content'), $layout_path);
echo $layout_view_object->render();
View.class.php:
public function render()
{
$data = $this->data;
ob_start();
include($this->path);
$content = ob_get_clean();
return $content;
}
А в Layout'е контент подключался так:
<?=$data['content']?>
Заранее благодарю!