Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 3 » Blade шаблоны из базы данных » 13.02.2013 15:49:16

Proger_XP, благодарю за совет.
В классе View я уже почти присмотрел хорошее место чтобы реализовать задуманное. Буду мастерить.

#2 Re: Laravel 3 » Blade шаблоны из базы данных » 12.02.2013 15:50:10

Прошу прощения за корявость изложения и постановки задачи.

Я с Laravel ознакомился не так давно и простота работы с некоторыми вещами меня подкупила.
Поэтому и хотел узнать, возможно ли отделаться «малой кровью» за реализацию задуманного.

Шаблоны Blade хорошая штука, но я хотел бы хранить их не отдельными файлами, а записями в базе данных.
То есть, если у меня был файл, например, index.blade.php с совершенно различным содержимым:

PHP
@layout('layouts.main')
@
section('content')
    <
p>здесь просто текст</p>
    <
p>тут ссылки:</p>
    {{ 
HTML::link('/','На главную') }}
    <
p>здесь форма:</p>
    {{ 
Form::open('/') }}
    ...

    <
p>здесь данные из базы данных</p>
    @foreach(
$pages as $page)
    ...
@
endsection

Я бы хотел поместить его в базу данных, а в нужный момент в контроллере сделать нечто подобное:

PHP
return OtherView::make(шаблон_из_бдданные_в_шаблон));

Мне бы не хотелось компилировать что-либо в контроллере:

PHP
$test_variable HTML::link('/','На главную');

а затем отдавать это в вид, потому как данные будут совершенно разного плана.

В контроллере я хочу брать шаблон вида из базы данных, передать ему нужные данные и отправить все это рендериться в вид для вставки в базовый layout.
На данный момент я мыслю, что нужно немного покумекать с наследованием либо от класса вида, либо от класса блейда.
Поэтому, повторюсь, перед тем как изобретать велосипед, хотел узнать может кто уже сталкивался с подобной задачей и знает в какую сторону копать. Может бандл какой есть. Может где функцию в документации просмотрел.
Не может быть, что бы мне одному пришла в голову столь извращенная идея.

Еще, размышляя на данную тему, в голову пришла мысль использовать сторонний шаблонизатор позволяющий выполнить подобное. Но раз в Laravel уже есть собственный шаблонизатор хотелось бы использовать именно его, даже если для этого придется немного поизвращаться.

На крайняк, неким ветиеватым способом брать шаблон из базы данных и подсовывать его в шаблонизатор в виде рhp-файла (*.blade.php). Но это просто как один из возможных вариантов рассматриваемых в последнюю очередь.

В общем, что думаете по этому поводу?

#3 Laravel 3 » Blade шаблоны из базы данных » 11.02.2013 20:40:20

samssrus
Ответов: 4

Доброго времени суток.
Подскажите в какую сторону копать по следующему вопросу.

Есть файл базового шаблона (layout) views/layouts/main.blade.php:

PHP
<html>
<
body>
    @yield(
'content')
</
body>
</
html>

Есть шаблон конкретной страницы views/page/index.blade:

PHP
@layout('layouts.main')
@
section('content')
    {{ 
$test_variable }}
@
endsection

Для примера, в action некоторого контроллера (или в routes) выполняется следующее:

PHP
return View::make('page.index',array('test_variable'=>$test_variable));

Все работало замечательно до тех пор пока…
… не столкнулся с необходимостью передать через $test_variable конструкцию шаблона типа такой:

PHP
{{ HTML::link('/','На главную') }}

По задумке хочу хранить шаблоны в базе данных.

Естественно вместо ожидаемой ссылки (<a href="/">На главную</a>) получил то, что передал…

Отсюда вопрос: — Как?
Возможно, где-то в документации просмотрел какой метод… ткните пальцем.
С другой стороны, понимаю, что это echo и вряд ли в лоб можно реализовать задуманное. Не хотелось бы городить огород и изобретать велосипед.
Поэтому, прошу подсказать идею как лучше реализовать задуманное.
Заранее благодарю.

Подвал раздела