1

Yiiでネストされたモジュール構造を設定しましたが、何らかの理由で子モジュールがレイアウトをまったく使用していないようです。

これが私の道です。

app
    protected
        modules
            parent
                views
                    layouts
                        column1.php
                        column2.php
                        main.php
                modules
                    child

次のように設定ファイルにモジュールを追加しました

'modules'=>array(
    'parent'=>array(
        'modules'=>array(
            'child',
        ),
    ),
),

どちらのモジュールも機能しますが、子モジュールで表示されるのは、デフォルト/インデックスコントローラーを次のパスでカスタマイズできることを説明するメッセージだけです。レイアウトコンテンツは表示されていません。

ドキュメントに基づいて、子モジュールが親からレイアウトを継承することを期待していました。

gii(子モジュールは作成されません)を使用して子モジュールを生成したので、それを標準モジュールとして作成し、親内にモジュールフォルダーを追加し、結果を子として親モジュールにコピーしました。

どこを見ればいいの?

4

1 に答える 1

0

問題はYiiのビュー解決スキームにあることがわかりました。親モジュールは、デフォルトのレイアウトを「column1」に設定します。これは、子モジュールに継承されます。'column1'レイアウト内で、'main'レイアウトは次のコードでレンダリングされます。

$this->beginContent('/layouts/main');

Yiiのビュー解決スキームでは、これは現在のモジュールのレイアウトフォルダーにマップされます。親モジュールのビューの場合、これは親ビューフォルダーのメインレイアウトにマップされ、正常に機能します。

/protected/modules/parent/views/layouts/main.php

子モジュールのビューの場合、これは存在しない子ビューフォルダーのメインレイアウトにマップされ、解決に失敗します。

/protected/modules/parent/modules/child/views/layouts/main.php

ここのYiiフォーラムで提供されている回避策は、親モジュールの「column1」および「column2」レイアウトを変更して、半固定パスを使用することです。

$this->beginContent('//../modules/parent/views/layouts/main')
于 2012-08-29T22:54:32.723 に答える