2

私はあなたが管理者である場合にのみアクセスできるはずのコントローラーのセットを持っています(通常のユーザーではありません)。

したがって、各コントローラーのコンストラクターでは、次のようにします。

public function __construct() {
    parent::__construct();
    if (! is_admin()) {
         show_404();
    }
}

このコードをすべての管理コントローラーのコンストラクターに追加する代わりに、これを行うためのより良い方法はありますか?

Admin_Controller次のようなBaseコントローラーを作成できると思っていました。

public class Admin_Controller extends CI_Controller {

    public function __construct() {
         //the above code goes here
    }
}

そして、他のすべてのコントローラーは、クラスの代わりにこのクラスを拡張できCI_Controllerます。これに関する唯一の問題は、このファイルを他のコントローラーの先頭に含める必要があることです。そうしないと、CodeIgniterがを見つけることができませんAdmin_Controller

これを行うためのより良い方法はありますか?

4

2 に答える 2

4

これをアプリケーション/コアフォルダーに配置します:MY_Controller.php (大文字の正しい使用に注意してください)

class MY_Controller extends CI_Controller
{
public function __construct() 
{
     parent::__construct();
     if (! is_admin())
     {
          show_404();
     }
} 

次に、ユーザーにログインさせたいすべての通常のコントローラーで

class Whatever extends MY_Controller
{
   public function __construct() 
    {
         parent::__construct();
    } 
}

コアクラスの拡張については、こちらのユーザーガイドをご覧ください

于 2012-06-08T23:56:33.207 に答える
2

同じことをしたフックも使えると思いますが 、もっと正確なコントロールが必要なので、すべてのコントローラーをチェックする必要があります。すべてのコントローラーがシングルユーザーに対して禁止されているわけではありません。

于 2012-06-08T23:22:30.940 に答える