web-dev-qa-db-ja.com

Yii2フロントエンドとバックエンド間のリンク(高度なテンプレート)

メニューのバックエンド部分から(またはバックエンドから管理者へ)フロントエンドのものへのリンクを追加する必要がある場合、ハードコードなしでこれを行うにはどうすればよいですか?この:

 \Yii::$app->request->BaseUrl 

親ディレクトリからパスを返します

/sitename/backend/web
/sitename/frontend/web
12
WebArtisan

バックエンドアプリケーションの構成で、フロントエンドアプリケーションで使用されているものと同じ名前と構成の「UrlManager」コンポーネントを追加する必要があります。

return [
    'components' => [
        'urlManager' => [
            // here is your backend URL rules
        ],
        'urlManagerFrontEnd' => [
            'class' => 'yii\web\urlManager',
            'baseUrl' => '/a/frontend/web',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ],

    ],
];

次に、以下を呼び出してフロントエンドURLを作成する必要があります。

Yii::$app->urlManagerFrontEnd->createUrl();
22

私の間違い-リンク値が間違って送信されました。

違う:

$menuItems[] = ['label'=>'frontend', 'url'=>[\Yii::$app->urlManagerFrontEnd->baseUrl]];

それはうまくいきます:

$menuItems[] = ['label'=>'frontend', 'url'=>\Yii::$app->urlManagerFrontEnd->baseUrl];
3
WebArtisan