我建立一個CMS佈局和我的目標是允許管理員選擇頁面視圖/佈局(全角,邊欄等)選擇頁面訪問量/ CMS中
所以我的問題是什麼是最好的做法做到這一點...
我想與ID和LAYOUT_NAME數據庫佈局創建,然後在控制器return View::make('$layout_name');
我建立一個CMS佈局和我的目標是允許管理員選擇頁面視圖/佈局(全角,邊欄等)選擇頁面訪問量/ CMS中
所以我的問題是什麼是最好的做法做到這一點...
我想與ID和LAYOUT_NAME數據庫佈局創建,然後在控制器return View::make('$layout_name');
有可能有不同的方式來實現這一點。 在我看來,最好保持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
此解決方案假定您瞭解不同類型的佈局可以使用。
也許最簡單的方法是根據用戶類型加載不同的/自適應樣式表/角色。例如,您可以通過將側邊欄div(默認隱藏)重新顯示爲塊,從而輕鬆地將邊欄添加到頁面。這使得它僅在加載專用/自適應樣式表時才顯示。
備註:我沒有說這是「最佳做法」! 但是這個解決方案很容易理解,在服務器端很少/幾乎沒有開銷,可以簡單地審查和修改。 進一步CSS使您能夠超載的款式,這樣可以保持專用樣式(管理員例如)體積小,易於
還應該不成問題根據用戶角色(或其他)以某種方式連接數據庫的設置到修改視圖的專用樣式表。
附加說明:請務必記住在頁面的後端保護頁面功能。由於只有頁面/管理功能/功能沒有顯示在頁面中,並不意味着聰明的用戶無法找到它。
絕對不要只使用不同的CSS表格,這樣可以避免與模板混雜在一起,使事情變得更容易。
看看https://octobercms.com/。它基於Laravel。 – 2015-02-11 10:59:30
@MarkusMüller您可以直接從Web界面編輯/創建可執行PHP文件的事實讓我感到害怕;它可以將一個簡單的網站管理員憑據折衷轉化爲一個enitre服務器接管。 – 2015-02-11 11:17:16
@AndréDaniel沒有注意到。我以爲你可以創建/編輯基於樹枝的模板文件。我們有我們自己的CMS,所以我從來沒有使用它。 – 2015-02-11 11:22:50