Страница 1 из 1

Render из базы данных.

Добавлено: 2020.03.07, 09:53
skobanev
Добрый.
Скорее всего вопрос дикого новичка и тема не раз поднималась, но...
В общем дошел до момента, когда необходимо рендерить контент не из файла, а из БД. Тут я немного запутался, если можно, то помогите.
У меня настроен YII BASIC.
В стандартном решении, все представление ( php / html ) пишется в файл 'blabla.php' , Потом из контроллера вызывается $this->render('blabla') и вуаля, получаем страницу в браузере.
После некоторого изучения класса CONTROLLER, выявил метод renderContent( $blabla ), который, насколько я понял, рендерит только HTML контент. Уже лучше. Можно в админке сделать создание HTML страничек. Но даже про вызов виджетов можно напрочь забыть.
Начал присматриваться к TWIG / SMARTY, но насколько я понял, принцип данного действия такой же, как и у $this->render(), только через файл.

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

Re: Render из базы данных.

Добавлено: 2020.03.07, 11:39
Usick
Думаю в сторону ActiveRecord и CRUD.

Re: Render из базы данных.

Добавлено: 2020.03.07, 13:35
skynin
skobanev писал(а): 2020.03.07, 09:53 Помогите пож. понять в какую сторону копать.
Для старта стоит прочесть
из Полное руководство по Yii 2.0:
https://www.yiiframework.com/doc/guide/2.0/ru
все до "Безопасность".
Это все там и написано.

Или посмотреть курсы на Youtube.

А то вы потеряете кучу времени на:
После некоторого изучения класса ... и "открытий" Потом из контроллера вызывается $this->render('blabla')

Re: Render из базы данных.

Добавлено: 2020.03.07, 18:21
skobanev
skynin писал(а): 2020.03.07, 13:35 Для старта стоит прочесть
из Полное руководство по Yii 2.0:
https://www.yiiframework.com/doc/guide/2.0/ru
все до "Безопасность".
Это все там и написано.
Не поверите, но читал, и Сафронова тоже читал... ( дальше я наверно заткнусь.)

Я на самом деле не совсем понимаю, как сделать рендер из базы PHP / HTML кода штатными средствами.

Что такое ACTIVE RECORD и CRUD знаю хорошо.

Если у кого есть пример , попрошу поделиться.

Извините если кого обидел.

Re: Render из базы данных.

Добавлено: 2020.03.07, 20:10
yiiliveext
Как-то так
Контроллер
Изображение
Представление
Изображение

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:14
skobanev
((((( Вопрос был совсем не об этом ((((
Я судя по всему как то не так выражаю свои мысли, что никто понять не может. За это извините.
Спрошу по другому.

Я беру весь код файла представления( и HTML и PHP ) и кладу в поле таблицы.
Как мне отрендерить не файл представления, а поле таблицы с теме же данными.
Если я в самописной админке буду создавать страницу, то не буду же писать код страницы в файл представления, и добавлять Экшн на контроллер. - Я буду писать в базу. И рендерить тоже хотелось бы из базы.


render() - Позволяет рендерить только файл.
а renderContent() - совершенно не понимает php вставки.
Вот я и спросил, как мне отрендерить контент из базы, а не из файла.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:20
yiiliveext
skobanev писал(а): 2020.03.08, 00:14 Я беру весь код файла представления( и HTML и PHP ) и кладу в поле таблицы.
Напуркуа?

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:23
skobanev
Ну а как ? Где мне хранить контент страницы ? в файле ? Я тогда логику процесса совсем не понимаю.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:25
yiiliveext
skobanev писал(а): 2020.03.08, 00:23 Ну а как ? Где мне хранить контент страницы ? в файле ?
В поле таблицы, выводить передавая модель в представление и делая в нем <?= $model->content?>
Сам шаблон представления в файле остается.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:28
skobanev
Сразу вопрос.
Вот такие php вставки будут рендерится ?
<?= \app\widgets\navigation:widget([ $catId => 2]) ?> Или они будут отсекатся либо текстом выводится ?

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:30
yiiliveext
В контенте только html должен быть.Если на странице есть виджеты, то они должны быть в файле представления.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:32
skobanev
Так вот я о чем и спрашиваю. Чтоб я рендерил код представления ( И PHP и HTML ) из базы, а не из файла. Включая виджеты и PHP код. Скорее всего этот вопрос уже поднимался. Только я что то не могу на него найти ответ.
В джумле был плагин, который позволял вставлять PHP код в контент страницы. можно было молули вызывать типа { moduleid 40 }... Вот и я так же хочу. Если такое вообще возможно.
Можно конечно при вызове страницы писать все в файл и рендерить его, но это нагрузка на сервер. Хотя если генерировать файлы правильно, то генерация нужна лишь раз, а логика потом будет проверять на нахождение файла. Типа если файл есть, то читать его. Но придется следить за версионностью при редактировании страницы в админке. Мол если была запись, то удалять файл. А Дальше при открытии, он перегенерится заного. Бред, но чтобы не городить огороды, то можно

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:41
yiiliveext
skobanev писал(а): 2020.03.08, 00:32 Так вот я о чем и спрашиваю. Чтоб я рендерил код представления ( И PHP и HTML ) из базы, а не из файла. Включая виджеты и PHP код. Скорее всего этот вопрос уже поднимался. Только я что то не могу на него найти ответ.
В джумле был плагин, который позволял вставлять PHP код в контент страницы. можно было молули вызывать типа { moduleid 40 }... Вот и я так же хочу. Если такое вообще возможно.
Я не понимаю смысл этой операции, зачем хранить php код в базе?
Ну можно, конечно, но его надо будет писать во временный файл и рендерить все равно из файла.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:43
skobanev
Я как раз отредактировал предыдущий пост.
Гибкость хочу. Чтоб не лезть в код. А чтоб из админки можно было контентом руководить.
На сегодняшний день мне с провайдером Извините, с Хостингом. ( уже голова не работает ) легче по HTTP работать. FTP ужасный, а SSH 60 сек сессия по моему. Сосредоточится не успеваю.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:46
yiiliveext
skobanev писал(а): 2020.03.08, 00:43 Я как раз отредактировал предыдущий пост.
Для этих целей в yii2 есть кеширование страниц представлений, ничего выдумывать не нужно.
https://www.yiiframework.com/doc/guide/ ... ching-page

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:48
yiiliveext
skobanev писал(а): 2020.03.08, 00:43 Гибкость хочу. Чтоб не лезть в код. А чтоб из админки можно было контентом руководить.
На сегодняшний день мне с провайдером легче по HTTP работать. FTP ужасный, а SSH 60 сек сессия по моему. Сосредоточится не успеваю.
Для этого не нужно хранить php код в базе.

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:50
skobanev
А логику можно ?

Re: Render из базы данных.

Добавлено: 2020.03.08, 00:56
yiiliveext
skobanev писал(а): 2020.03.08, 00:50 А логику можно ?
Какую? Если хотите редактировать шаблоны представлений из админки, то это можно и с файлами делать.
Но это весьма порочная практика, попадание злоумышленника в админку приведет к получению контроля над сервером.
Как минимум нужно какой-то дополнительный шаблонизатор юзать вроде twig.

Re: Render из базы данных.

Добавлено: 2020.03.08, 01:00
skobanev
Вот.
Спасибо тебе еще раз добрый человек, Второй раз мне правильное направление даешь.
Буду курить шаблонизаторы.
Еще раз спасибо.
Тут кстати единственное место где ответы получить можно.