2015-05-17 3 views
1

Я создаю CMS, используя Laravel. Я хотел бы использовать разметку Twig в «шаблонах страниц», которые редактируются пользователями и хранятся в базе данных. Приложение CMS по-прежнему будет использовать Blade.Использование Twig в Laravel 5 без TwigBridge?

Я не хочу использовать TwigBridge, поскольку, по моему мнению, это заставит меня использовать Twig для всего. Например, в документации TwigBridge это гласит:

Вы вызываете шаблон Twig, как и любой другой вид:

// Без расширения файла

View :: сделать ('i_am_twig' , [...])

Вместо этого я хочу, чтобы мои представления продолжали использовать шаблоны клинков, но используйте Twig для разбора редактируемых пользователем шаблонов страниц. Возможно, это выглядело бы примерно так:

Twig::make('i_am_twig', [...]) 

Возможно ли это? Пошаговые инструкции будут высоко оценены!

Я понимаю, что некоторые люди могут предположить, что я выбираю только один: Используйте шаблоны для блейдов или шаблоны для завивки для всего. Но, пожалуйста, давайте не будем здесь обсуждать.

ответ

0

Это не идеально, но я отправлю его в качестве заполнителя, пока не появится лучший ответ. Я еще не хорошо разбираюсь в Laravel Packages, иначе я бы выбрал этот маршрут. Вот как я это сделал:

Шаг № 1: В composer.json ..

Добавить "прут/прутик": "~ 1,0" в разделе требуется:

"require": { 
    "laravel/framework": "5.0.*", 
    "twig/twig": "~1.0"   <=========== add this 
}, 

И также в разделе Автозагрузка:

"autoload": { 
    "classmap": [ 
     "database", 
     "app/Models", 
     "app", 
     "database/seeds", 
     "vendor/twig/twig/lib/Twig/Autoloader.php" <==== add this    
    ], 

Шаг № 2: Обновление Композитор:

> sudo composer update 
> composer dump-autoload 

Шаг № 3: Создайте следующую папку/файл: /resources/views/twig/hello.html

Well hello everyone! 

Шаг № 4: Рендер шаблона:

\Twig_Autoloader::register(); 

    $loader = new \Twig_Loader_Filesystem(app_path() . '/../resources/views/twig'); 
    $twig = new \Twig_Environment($loader); 

    echo $twig->render('hello.html', array('debug' => true)); 
+0

Как вам это удалось? Я смотрю на что-то подобное, но с электронной почтой и контентом CMS. Любые проблемы? Управлять получением рендеринга из строки? – Wizzard

+0

@Wizzard: В конце концов я отказался от этой архитектуры и начал использовать октябрьскую CMS. Я никогда не мог понять, как заставить Twig отобразить из строки. Из того, что я нашел в Интернете, не было никакого способа без взлома самого Твигга, который оказался очень сложным. – clone45

+0

Intersting ... Я видел это и думал, что это может сработать; https://techpunch.co.uk/development/render-string-twig-template-symfony2 – Wizzard

Смежные вопросы