在CMS中选择页面视图/布局

时间:2015-02-11 10:56:56

标签: php mysql laravel laravel-4 laravel-5

我正在构建CMS,我的目标是允许管理员选择页面视图/布局(全宽,边栏等)

所以我的问题是这样做的最佳做法是什么......

我在想在数据库布局中使用ID和layout_name创建,然后在控制器return View::make('$layout_name');

中创建

2 个答案:

答案 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

此解决方案假设您了解可以使用的不同类型的布局。