Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 如何在cakephp中实现多模板_Templates_Cakephp - Fatal编程技术网

Templates 如何在cakephp中实现多模板

Templates 如何在cakephp中实现多模板,templates,cakephp,Templates,Cakephp,我使用CakePHP框架,希望在我的项目中有多个模板。 有没有办法在CakePHP中实现多个模板 例如,管理员可以在后端选择第一个或第二个模板,用户可以使用相同的模板。(就像Joomla后端一样)。如果有任何方法,我如何实现这一点?只是告诉您如何实现这一点的基本想法 在应用程序中,请尝试以下代码 <?php class AppController extends Controller { var $components = array( 'Auth','Session', 'Req

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


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

只是告诉您如何实现这一点的基本想法

在应用程序中,请尝试以下代码

<?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 add的其他控制器文件中,必须有如下代码

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

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

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

您可以在
视图/布局中创建不同的模板

template_1.ctp
template_2.ctp
具有不同的样式

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

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


或者,您可以根据

使用主题。加载模板时不应使用include/require。