如何在cakephp中实现多模板

时间:2013-01-23 06:53:55

标签: templates cakephp

我使用CakePHP框架,我希望在我的项目中有多个模板 有没有办法在CakePHP中实现多个模板?

例如,管理员可以在后端选择第一个或第二个模板,用户可以使用相同的模板。 (就像在Joomla后端)。如果有任何方法,我该如何实现?

3 个答案:

答案 0 :(得分:5)

只是告诉你如何做到这一点的基本想法。

在app_controller中尝试以下代码。

<?php
class AppController extends Controller
{
    var $components = array( 'Auth','Session', 'RequestHandler','Email','Gzip.Gzip','SwiftMailer');

    var $helpers = array( 'Javascript', 'Form', 'Html', 'Session','Time','Custom','Paginator','Text' );

    function beforeFilter()
    {
        if(isset($this->params['admin']) && $this->params['admin'] == 1)
        {
            $this->layout = "admin";
        }
        else
        {
            $this->layout = "default";
        }       
    }
?>

在扩展app_controller的其他控制器文件中,你必须拥有如下代码。

<?php
class OtherController extends Controller
{
    var public $uses = array('ModelName');

    function beforeFilter()
    {
        parent::beforeFilter();
    }
?>

您还可以将$this->layout覆盖到每个控制器操作。

答案 1 :(得分:1)

您可以使用此链接 http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Views.html

我不使用此功能,但我希望此链接可以帮助您。

答案 2 :(得分:1)

您可以在View/layouts

中创建不同的模板

template_1.ctptemplate_2.ctp具有不同的风格

并创建default.ctp布局,其中包含一个现有模板或在$this->layout = 'template_1';中设置AppController;

<?php
    //default.ctp
    $loadTemplate = 'template_1.ctp';//value from database or config file?
    include_once($loadTemplate);
?>

或者您可以按照documentation

使用主题