2016-07-20 4 views
1

Я хочу сохранить шаблоны blade в базу данных, потому что header and footer каждой страницы is customizable для пользователя. Я хочу, чтобы мои пользователи сами создавали макет, а затем для каждого запроса от данного пользователя, я хочу обслуживать страницу, используя макет, указанный этим пользователем.Сохраните шаблоны кликов в базе данных, а не файл

Необходимые переменные, передаваемые контроллером, предоставляются им в документации.

Примечание: я доверяю своим пользователям. Все они являются заинтересованными сторонами проекта и являются программистами, поэтому выполнение кода на стороне сервера является приемлемым.

ответ

0

Я спросил и ответил на аналогичный вопрос несколько дней назад. Насколько я знаю, Blade не обрабатывает содержимое представления из столбцов базы данных. Хотя вы можете использовать метод просмотра compileString(). Но вы должны взглянуть на следующие вопросы.

Extend Blade Template from Database stored string

Let users create custom blade layouts/store in database

+1

Должен ли я пойти и сохранить шаблон по каждому запросу, а затем обработать его? @ huzaib-shafi –

+1

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

1

я понял, что может улучшить безопасность и кэширование, если я просто позволить им вставить только статический контент. Единственное, что мне нужно изменить, это основной контент, поэтому я могу просто позволить им установить token, где будет размещен контент. Как в ответе выше на @ huzaib-Шафи, я сделал следующее ...

//In controller 
$content = View::make('final',compact('data')); 
$token = "<meta name='_token' content='" . csrf_token() ."'"; 
$scripts = View::make('final_scripts',compact('data')); 

$view = str_replace_first("<%content%>", $content, $templateInDatabase); 
$view = str_replace_first("<%token%>", $token, $view); 
$view = str_replace_first("<%scripts%>", $scripts, $view); 

return $view; 

Это принуждает их использовать bootstrap в их шаблоне, потому что я использую bootstrap styles в моих blade шаблонов, но это приемлемо в мое дело.

+1

Но замены строк также накладные. Но я не знаю лучшего решения. –