Php 在Facebook应用程序中嵌入Yii模块页面
我已经创建了Yii测验模块,我也想在Facebook应用程序(Facebook端)中使用该模块。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; ?> 显然,把
它可以通过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;
}