1

Facebook アプリ (Facebook 側) でも使用したい Yii クイズ モジュールを作成しました。
iframe を介して実行できますが、生成されたページには、メニューやその他の多くの不要な (この場合) ものもあります。Yii で生成されたモジュール コードのみを Web サイトの残りなしで表示することは可能ですか?

4

2 に答える 2

2

そのモジュールに別のレイアウトを試してみてください。最初に、そのモジュールにレイアウト フォルダーとレイアウト ファイルを追加できます。したがって、この新しい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内のクラスのサブクラスです。そして、そのクラスは を定義するため、同じ構造を持っている場合、上記の方法は機能せず、モジュールのコントローラー内のレイアウトをオーバーライドする必要があります。ただし、各コントローラー内に移動して行を追加する代わりに、 QuizModule.phpの関数でこれを行うことができます。ControllerlayoutbeforeControllerAction($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行はそこにあるはずです。

于 2012-10-29T13:50:44.590 に答える
1

protected/views には、「main.php」というファイルがあります。これはメイン レイアウト ファイルで、$this->render によって呼び出されるビューの周りにレンダリングされます

メニューなどを削除するには、行を除く本文内のすべてを削除します。

<?php echo $content; ?> 

明らかに、すべてのものを頭に残します(.cssファイルなど...)

于 2012-10-29T13:13:31.710 に答える