0

私は Yii フレームワークをいじってみましたが、もう少し深く考えて、いくつかの異なる URL が同じコントローラーを指すアプリケーションをセットアップしたいと考えています。

通常、domain.com/content は、MVC の標準であるクラス ContentController を指します。

私がやりたいことは、ArticlesController、DisplayController、および SplashController という 3 つのコントローラーをセットアップすることです (おそらくそれ以上ですが、これで十分です)。

次に、基本的にクライアント用の CMS となるものをセットアップします。クライアントは必要な数のページを作成し、データを処理するために既にセットアップした上記の 3 つのコントローラーをポイントすることができます。

たとえば、私のクライアントは、次のページを設定できます: ニュース、通知、技術、およびそれらすべてが ArticlesController を指すようにします。また、管理、スペシャル、サポートのページを設定し、それらすべてが DisplayController を指すようにすることもできます。

これらすべてのコントローラーが Gii モジュールを使用して作成できることは知っていますが、この場合、非技術者には適していないと思うため、オプションではありません。

クライアントが CMS にログインできるようにして、「randompage」という新しいページを作成することを決定し、ドロップダウン メニューを使用して ArticlesController にポイントし、それに対して一連の記事を作成して、それらを作成できるようにしたいだけです。 domain.com/randompage/article-1 domain.com/randompage/article-2 で記事にアクセスできます

コントローラー RandompageController がないため、サイト/エラーを指す標準設定を使用

これまでに行ったことは、コントローラー ID を上書きできるコントローラー クラスにコンストラクターを作成することです。

class Controller extends CController {
    function __construct($id) {
        // Code here which successfully pulls from the database
        // which controller the current page should point to.
        parent::__construct($newControllerID)
    }
}

CController クラスをチェックインすると、$this->_id = 記事、表示、またはスプラッシュのいずれかですが、アプリケーション自体はまだサイト/エラーをロードします

コントローラーを他の場所で設定/オーバーライドする必要があると思います。私が試してみました

Yii::app()->setController($newControllerID)

しかし、それは何の効果もありません

おそらく、Yii がセットアップされ、URL ごとに特定のコントローラーを必要とする必要がありますが、それは、クライアントに対してかなり厳格なソリューションを開発し、新しいコントローラーを追加するたびに開発者を呼び出す必要があることを意味します。

私がうまくやろうとしていることを説明できたことを願っています。

4

1 に答える 1