Cakephp每个控制器有多个视图

时间:2011-10-19 11:52:39

标签: cakephp controller views

我有一个有3个功能的控制器。我希望在每个功能中显示3种不同的视图和布局,具体取决于用户是来自移动设备,网站还是Facebook。我已经在用户来自的地方传递。

我不确定如何为每个人展示特定的视图和布局。这是我开始做的一些代码来改变布局。我在名为res。

的文件夹中有视图
function availability() {

    if ($_REQUEST['from'] == 'facebook') {
        $this->layout = 'facebook';
        print_r ('face');
    }elseif ($_REQUEST['from'] == 'website'){
        $this->layout = 'website';
        print_r ('web');
    }elseif ($_REQUEST['from'] == 'mobile'){
        $this->layout = 'mobile';
        print_r ('mobile');         
    };
}

1 个答案:

答案 0 :(得分:4)

使用$this->render()更改视图。

$this->layout = 'facebook';
$this->render( 'res/facebook' );

您还可以将不同布局的所有视图放到自己的文件夹中并设置视图路径,这样您就不必在每个函数中手动选择视图:

function beforeFilter() {
    parent::beforeFilter();
    $this->viewPath = $_REQUEST[ 'from' ];
}

现在,从facebook/availability.ctp

获取Facebook布局的操作“可用性”视图