6

CodeIgniter から CakePHP に移行しようとしていますが、管理パネルを実装する最良の方法がわかりません。CI では、フロントエンド用と管理パネル用の 2 つの異なるアプリケーションを作成します。

グーグルで調べた結果、CakePHP で管理パネルを実装する 3 つの方法を見つけました。

  1. ルーティング - コントローラー/モデルをフロントエンドと管理パネルで分離したいので、これを使用したくありません
  2. プラグイン
  3. 2 つの個別のアプリ

プラグインを使用して管理パネルを実装する必要がありますか、それとも別のアプリを用意する必要がありますか? 他の利点よりも利点はありますか?

4

6 に答える 6

16

私は通常、アドミン/バックエンドをプラグインとして開発しています。これにより、バックエンド/管理コントローラー/ビュー/モデルがフロントエンドから分離されたままになり、別のスタイルシート、レイアウトなどを持つためにフープをジャンプする必要がなくなります.

別の利点は、フロントエンドとバックエンドの両方が同じアプリケーションの一部であるため、必要に応じてロジック/コンポーネントを共有できることです。たとえば、フロントエンドとバックエンドの両方で使用できるヘルパーを別のプラグインに配置できます。 (例: plugins/Shared または plugins/Handytexttools) 必要な場所で両方を使用します

経験則として。他のプロジェクトで再利用できる可能性のあるコンポーネントを別のプラグインに配置すると、これらのプラグインを他のプロジェクトに問題なく追加できます。プラグインをシンプルに保ちます。1 つまたは 2 つのヘルパーまたはモデルと JavaScript のいくつかのファイルを含むプラグインを作成することは問題ありません。これにより、プロジェクトに必要なプラグインを簡単に選択できます。Cake がプラグイン内のすべてのクラスのファイルの場所を「キャッシュ」すると、個別のプラグインのオーバーヘッドは最小限に抑えられます。

「admin」プラグインに戻ります。このプロジェクトに固有のコードのみを管理プラグインに含め、再利用可能な部分を別のプラグインに含めるようにしてください (例: 一般的なスタイルシートと管理パネルのレイアウト)。最小限のコーディングで次のプロジェクトの管理プラグインを開始できます

あなたのプロジェクトを頑張って、CakePHP を楽しんでください

于 2013-02-19T19:30:39.427 に答える
4

コントローラーとモデルを別々に保ちたい場合は、別のアプリを使用しますが、アプリ間で大量の重複コードが発生することになります (メンテナンスの頭痛の種が発生するのを待っています)。

私の選択は、管理ルーティングと管理テーマです。

/app/Config/core.php で管理ルーティングを有効にする

AppController beforeFilter() では:

$this->theme = isset($this->params['admin']) ? "Admin" : "Site";

すべてのサイト ビューとアセットを /app/View/Themed/Site/ に移動します

/app/View/Themed/Admin で管理テーマを作成します

于 2013-02-19T16:56:21.693 に答える
0

古い、CakePHP 1.3を参照していますが、それでも確認する必要がある質問です:CakePHP管理パネル

ケーキの方法はルーティングです。私は物事を簡単にするCakeDCユーザーのようなプラグインを使います。

于 2013-02-19T16:30:46.587 に答える
0

これを変更するだけで、admin_index.ctp のような管理ビューを使用できます。

//Configure::write('Routing.admin', 'admin');

Configure::write('Routing.admin', 'admin');

core.php とコントローラに admin_index() 関数を追加します

于 2013-09-23T11:31:07.563 に答える
0

私はこれが古いスレッドであることを知っています。しかし、管理パネルをプラグインとして実装する際に問題があったかどうかを尋ねたいと思います。特にコードの重複。

たとえば、e コマース サイトを実装しているとします。メインプラグインと管理プラグインの両方に OrderController があります。ロジックを 2 か所に維持するのはちょっと難しいと思いませんか?

メインコントローラーを1つだけ使用するのはどうですか。それは2つの目的を果たします。1 つは API として、次に管理 Web アプリケーションのコントローラーです。

次に、公開側は基本的に API を介して通信し、データをフェッチします。

それは良い考えだと思いますか?

于 2013-09-23T10:30:42.643 に答える
0

管理ルーティングを使用できます。チェックアウト:

http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing

別の解決策-実装が非常に簡単だと思う-は次のようなものです。

あなたのAppController で

public function beforeFilter(){
        $this->set('current_user', $this->Auth->user());
         }  

これにより、アプリで $current_user を使用できるようになります。

次に、ビューファイルで次を確認できます。

  <?php if ($current_user['role'] == 'admin'){/*place code for admin users to see here*/} ?>
  <?php if ($current_user){/*place code for logged-in users to see here*/} ?>
于 2013-02-19T17:10:47.367 に答える