0

CakePHP プロジェクトの 1 つで「管理パネル/インターフェース」を作成したいと考えています。最近の Web サイトでは非常に一般的です。最初は、このためのプラグインを作成する予定で、実行しようとしました。うまくいきませんでした。理由はわかりません。後で助けを求めます。しかし、次に、「Scafolding」を使用して、CakePHP が既にこの機能を提供していることに気付きました。私は今これを試していますが、なぜ期待どおりに機能しないのかわかりません。これが私がしたことです:

app/config/core.php :
---------------------
.
.
.
Configure::write('Routing.prefixes',array('admin'));
.
.
.

app/Controller/AppController.php :
----------------------------------
.
.
.
public $components=array(
    'Session',
    'Auth'=>array(
        'loginRedirect'=>array('admin'=>true,'controller'=>'home','action'=>'index'),
        'logoutRedirect'=>array('controller'=>'home','action'=>'index'),
        'authorize'=>array('Controller')
    )
);
.
.
.

管理パネル用に別のコントローラーが必要だと思ったので、作成しました:

app/Controller/AdminsController.php :
-------------------------------------
<?php
    App::uses('AppController','Controller');
    class AdminsController extends AppController{
       public $name='Admins';
       public $scaffold='admin';
    }

しかし、うまくいきませんでした。したがって、CakePHP はすべての個々のコントローラーにこの機能を提供していると思いました。つまり、別のモジュール/コントローラー/サブシステムとしてではなく、すべての個々のコントローラーに対して管理パネルを用意することになっていると思いました。そこで、既存のコントローラー「Controllers1」を少し変更しました。

<?php
    App::uses('AppController','Controller');
    class Controllers1Controller extends AppController{
       public $name='Controllers1';
       public $scaffold='admin';
    }

次に、この URL にアクセスしようとしましたが、my_site/admin/jobs/view 結果は同じです。

提案をお願いします。どうすればよいですか? 「管理者パネル」用の新しいプラグインを作成する必要がありますか? そして、私のせいは何ですか?

ありがとう

4

1 に答える 1

1

AdminsController は、admin プレフィックスを使用する必要はありません。必要なのは、既に行ったように Routing.Prefixes を定義することだけです。

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

あなたが私たちに言及した JobsController の例では、それを機能させるために必要なことは次のとおりです。

<?php

App::uses('AppController', 'Controller');

class JobsController extends AppController {
     public $scaffold = 'admin';
}

ルーティング プレフィックスを機能させる方法は、プレフィックスを使用してメソッドを宣言することであるため、追加のコントローラーを使用しないでください。

<?php


App::uses('AppController', 'Controller');

class ArticlesController extends AppController {

      function admin_index() {
        //This method can be found under /admin/articles
      }
}
于 2013-11-01T17:13:08.833 に答える