0

ユーザーがレイアウトを選択してデータベースに保存するプロジェクトがありますが、このレイアウトをリアルタイムで変更するにはどうすればよいですか?

例えば; http://www.example.com/ユーザー名/controller/action/id

サイト全体で、最初のパラメーターにusernameを使用します。これは、システムが選択したレイアウトを実際に知る場所です。

誰でも私を助けることができますか?

編集済み

例えば; ユーザーがサイトにアクセスすると、次のリンクを渡します: www.example.com/index.php? layout=4545455であるため、使用するレイアウトを知ることができますが、すべてのルート サイトでこのパラメーターlayout=4545455を保持するにはどうすればよいですか? about メニューをクリックすると、www.example.com/index.php?r=site/about という URL になります。

4

3 に答える 3

2

ログインコントローラー内でレイアウトを設定できます。ユーザーがログインに成功したら、データベースから自分のレイアウトを取得し、レイアウトを に設定します$this->layout = "layout_name"。ビューフォルダー内にレイアウトファイルを準備しておく必要がある場合

注:詳細については、@ sm1979の回答を参照してください

于 2016-11-21T05:19:00.533 に答える
0

皆様のお陰で以下の物が出来ました。

class MainController extends \yii\base\Controller {

    public function init()
    {
        parent::init();
    }

    public function beforeAction($action) { 
        if(Yii::$app->request->get('layout')) {
            $this->layout = 'set_layout';
        }

        return parent::beforeAction($action);
    }
 } 


class SiteController extends MainController
{
  // code here 
}

メインのコントローラーを作成しました。作成するすべてのコントロールはそれを継承します。そして、beforeAction ($ action)メソッドを使用して、URLの内容に従ってレイアウトを変更できます。(例: www.example.com/index.php?layout=485121)

于 2016-11-22T15:51:14.380 に答える