我创建了 Yii 测验模块,我也想在 Facebook 应用程序(Facebook 端)中使用它。
它可以通过 iframe 完成,但生成的页面也有菜单和许多其他不必要的(在这种情况下)东西。Yii 是否可以只显示生成的模块代码而不显示网站的其余部分?
2 回答
尝试为该模块使用不同的布局。首先,您可以将布局文件夹和布局文件添加到该模块,例如:/protected/modules/quiz/views/layouts/quizlayout.php。所以这个新的quizlayout.php应该是这个模块中所有视图的布局。
为此,您可以在 QuizModule 类中设置quizmodule的layout
属性,如下所示(在QuizModule.php中):init()
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';
}
//...
}
现在默认情况下,gii 生成的模块的控制器是component/Controller.php文件中类的子Controller
类。并且该类定义了 a ,因此如果您具有相同的结构,则上述方法将不起作用,并且您必须覆盖模块控制器中的布局。但是,您可以在QuizModule.php中的函数中执行此操作,而不是进入每个控制器并添加一行:Controller
layout
beforeControllerAction($controller, $action)
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;
}
编辑:
当然,您的quizlayout.php不应该有菜单代码和任何额外的东西,但至少该echo $content
行应该在那里,正如爱斯基摩人的回答中所提到的那样。
在你的 protected/views 中有一个名为“main.php”的文件,这是你的主布局文件,它会在 $this->render 调用的任何视图周围呈现
要删除菜单等。删除正文中的所有内容,但以下行除外:
<?php echo $content; ?>
显然把所有的东西都留在头上(.css 文件等......)