Задать вопрос
@Aqulus

Почему не работает return в php?

Здравствуйте. Работаю с PHP и шаблонизатором Twig.
Имею Абстрактный контроллер, где есть функция рендера Twig'a, код:

class AbstractController
{
	public $twig;

	public function __construct()
	{
		$loader = new \Twig\Loader\FilesystemLoader(\EF::$rootDirectory . '\src\EF\Templates');
		$this->twig = new \Twig\Environment($loader);
	}

	public function view($templateName, $viewParams = [])
	{
		$templateName = $templateName . '.ef' . '.html';

		try
		{
			return $this->twig->render($templateName, $viewParams);
		} catch (\Throwable $e)
		{
			die('Ошибка загрузки шаблона');
		}
	}
}


Использую в своем контроллере:
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;

class Index extends AbstractController
{
	/**
	 * @throws SyntaxError
	 * @throws RuntimeError
	 * @throws LoaderError
	 */
	public function actionIndex()
	{
		$viewParams = [
			'test' => 'username'
		];

		return $this->view('index');
	}
}


На что получаю пустоту. Но если я напишу:
echo $this->view('index');

То всё заработает. Что за магия? Помогите, пожалуйста, уже час сижу и не вдупляю :(
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
render() возвращает строку, которую соотв-но нужно как-то вывести, например через echo
Если хотите сразу выводить содержимое то используйте
$this->twig->display($templateName, $viewParams)

Всё это описано в коротенькой документации по шаблонизатору
https://twig.symfony.com/doc/3.x/api.html#renderin...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы