2016-03-06 2 views
0

Я хочу написать программу с Yii, чтобы пользователи могли иметь свой шаблон.Как использовать механизм шаблонов в Yii?

Мое решение состоит в том, что каждый пользователь имеет запись в БД для хранения настраиваемого шаблона, такого как HTML-код и некоторый синтаксис, например Smarty или Twig.

Как я могу использовать PHP для получения этих записей и просто распечатывать его на экране, а мой шаблон кода выделяет синтаксис и показывает лучшие результаты? Это возможно или нет? Как мне это сделать?

Действительно вы знаете, если вы сохраняете php-коды в базе данных, когда вы печатаете их в файл, php-коды, которые вы сохранили в базе данных, не запускаются. Для меня самое главное - сохранить шаблон в базе данных whit php-команд, а затем повторить их в файле, а php-код выполняется так же, как обычно.

Но важно использовать smarty или twig и не позволять пользователям напрямую добавлять php-коды.

+2

Пожалуйста, объясните, какие ожидаемые результаты приведены с более подробной информацией. Трудно, чего вы пытаетесь достичь, – WeSee

+0

Я редактирую свой вопрос. Спасибо – Amin

+1

Если возможно, не позволяйте своим пользователям писать свой собственный PHP-код. Это позволяет вашим пользователям делать что-либо в вашей системе с любыми привилегиями, которые выполняет ваш php-интерпретатор, и это серьезное нарушение безопасности. В этом случае не позволяйте им писать HTML-код. Для большинства задач достаточно уценки. – Beowulfenator

ответ

0

Я нашел свой ответ. Просто сохраните каждую вещь в базе данных и при загрузке используйте функцию eval(). См. Документы в php и w3school.

1

Для шаблонов пользовательского интерфейса вы можете использовать разные макеты в Yii. Просто поместите ваши различные шаблоны макетов в папке ./views/layouts:

./views/layouts/main-template-1.php 
./views/layouts/main-template-2.php 
./views/layouts/main-template-3.php 

и выберите макет в контроллере при выполнении действия в зависимости от пользователя, который должен быть известен в контроллере.

EDIT: Без загрузки файлов макет от пользователей, вы можете загрузить код шаблона из базы данных (HTML скелета), а затем в контроллере вместе взятом макет и вид кода:

$contentWithoutLayout = $this->renderPartial('myview',...); 
return $this->applyLayout(contentWithoutLayout, $layoutFromDb); 

где applyLayout() твой метод слияние макета и просмотр содержимого.

+0

Да, я знаю это, но я не хочу, чтобы пользователи загружали файлы, и мне нужно, чтобы пользователи настраивали свой шаблон. – Amin