【问题标题】:Embed Yii module page in Facebook app在 Facebook 应用程序中嵌入 Yii 模块页面
【发布时间】:2012-10-18 18:48:13
【问题描述】:

我创建了 Yii 测验模块,我也想在 Facebook 应用程序(Facebook 端)中使用它。
它可以通过 iframe 完成,但生成的页面也有菜单和许多其他不必要的(在这种情况下)东西。 Yii 是否可以只显示生成的模块代码而不显示网站的其余部分?

【问题讨论】:

  • 只为那个模块使用不同的布局,你试过了吗?
  • 不,但这听起来很有趣。你能给我更多的提示吗?
  • 好的,让我将其扩展为答案

标签: php facebook facebook-graph-api yii integration


【解决方案1】:

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

为此,您可以在 QuizModule 类的 init() 中设置 quizmodulelayout property,如下所示(在 QuizModule.php 中):

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 类的子类。而那个Controller 类定义了一个layout,所以如果你有相同的结构,那么上面的方法将不起作用,你必须覆盖模块控制器中的布局。但是,您可以在 QuizModule.php 中的 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 行,正如爱斯基摩人的回答中提到的那样。

【讨论】:

    【解决方案2】:

    在您的受保护/视图中有一个名为“main.php”的文件 这是你的主要布局文件,它会围绕 $this->render

    调用的任何视图进行渲染

    要删除菜单等。删除正文中的所有内容,除了行:

    <?php echo $content; ?> 
    

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

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多