我正在构建CMS,我的目标是允许管理员选择页面视图/布局(全宽,边栏等)
所以我的问题是这样做的最佳做法是什么......
我在想在数据库布局中使用ID和layout_name创建,然后在控制器return View::make('$layout_name');
答案 0 :(得分:0)
可能最简单的方法是根据用户类型/角色加载不同/自适应样式表。例如,您可以通过设置侧边栏div(默认情况下隐藏)再次显示为块来轻松地将边栏添加到页面。这使得它仅在加载专用/自适应样式表时显示。
备注:我没有说这是“最佳做法”! 但是这个解决方案很容易理解,服务器端的低/几乎没有开销,可以简单地进行检查和修改。 更多的CSS使您能够重载样式,以便您可以保持专用样式(例如管理员)小而简单
以某种方式将数据库设置根据用户角色(或其他)链接到修改视图的专用样式表也不应该是一个问题。
附加说明:始终记住在页面后端也保护页面功能。因为页面中没有显示页面/管理员功能/功能,所以并不意味着聪明的用户无论如何都找不到它。
使用不同的CSS工作表,可以避免使用模板,从而使您更容易使用模板,并使事情更容易。
答案 1 :(得分:0)
可能有不同的方法来实现这一目标。
在我看来,最好让make
方法保持非动态,并使用View:share
在所有视图中共享布局设置。
在你可能需要做一个if语句来指定你的布局必须如何使用之后。
$layout_name = 'full_width'; // should be the result of the db query
View:share('layout', $layout_name); // use it in your controllers, wherever you want
在有关意见中:
@if ($layout == 'full_width')
@extends('layout.fullwidth')
@elseif ($layout == 'sidebar')
@extends('layout.sidebar')
@endif
此解决方案假设您了解可以使用的不同类型的布局。