Php 在Facebook应用程序中嵌入Yii模块页面

Php 在Facebook应用程序中嵌入Yii模块页面,php,facebook,facebook-graph-api,yii,integration,Php,Facebook,Facebook Graph Api,Yii,Integration,我已经创建了Yii测验模块,我也想在Facebook应用程序(Facebook端)中使用该模块。 它可以通过iframe完成,但生成的页面也有菜单和许多其他不必要的东西(在本例中)。在Yii中是否可以只显示生成的模块代码而不显示网站的其余部分?在受保护的/views中有一个名为“main.php”的文件 这是主布局文件,围绕$This->render调用的任何视图进行渲染 删除菜单等。。除去车身内除管路以外的所有部件: <?php echo $content; ?> 显然,把

我已经创建了Yii测验模块,我也想在Facebook应用程序(Facebook端)中使用该模块。

它可以通过iframe完成,但生成的页面也有菜单和许多其他不必要的东西(在本例中)。在Yii中是否可以只显示生成的模块代码而不显示网站的其余部分?

在受保护的/views中有一个名为“main.php”的文件 这是主布局文件,围绕$This->render调用的任何视图进行渲染

删除菜单等。。除去车身内除管路以外的所有部件:

<?php echo $content; ?> 


显然,把所有的东西都放在头上(.css文件等…)

尝试为该模块使用不同的布局。首先,您可以向该模块添加布局文件夹和布局文件,例如:/protected/modules/quick/views/layouts/quizlayout.php。因此,这个新的quizlayout.php应该是这个模块中所有视图的布局

为此,可以在quizmodule类的
init()
中设置quizmodule的名称,如下所示(在quizmodule.php中):

现在,默认情况下,gii生成的模块的控制器是component/Controller.php文件中
Controller
类的子类。而
控制器
类定义了一个
布局
,因此,如果您具有相同的结构,那么上述方法将不起作用,您必须覆盖模块控制器中的布局。但是,您可以在QuizModule.php中的
beforeControllerAction($controller,$action)
函数中执行此操作,而不是进入每个控制器并添加一行:

编辑:


当然,您的quizlayout.php不应该有菜单代码和任何额外的东西,但至少应该有
echo$content
行,正如爱斯基摩人的回答中提到的那样。

只需为该模块使用不同的布局,您已经尝试过了吗?没有,但听起来很有趣。你能给我更多的建议吗?好的,让我把它扩展成一个答案
class QuizModule extends CWebModule {

    public function init() {
        // this method is called when the module is being created
        // you may place code here to customize the module or the application

        // import the module-level models and components
        $this->setImport(array(
            'quiz.models.*',
            'quiz.components.*',
        ));
        $this->layout='quizlayout';
    }

    //...
}
public function beforeControllerAction($controller, $action) {

    if(parent::beforeControllerAction($controller, $action)) {
        // this method is called before any module controller action is performed
        // you may place customized code here

        $controller->layout='quizlayout';

        return true;
    }
    else
        return false;
}