2016-08-10 4 views
3

私はCodeIgniterの中REST Serverを使用していて、使用する方法は、すべての私のコントローラで私のアプリでは、私は起動時にこの行を書かなければならないということです。CodeIgniterの3自動ロードコントローラ

require APPPATH . '/libraries/REST_Controller.php'; 

誰がどのように知っていますこのREST_Controllerをオートロードし、私のすべてのコントローラでこの行を避けるには?私は必要を使用したくありません。あなたはCodeigniterの自動ロードの設定を介してこれを達成することができ、事前

答えて

2

ありがとうございます。

編集プロジェクトの

$autoload['libraries'] = array('REST_Controller'); 

とコントローラにおけるYourProject/application/config/$this->rest_controllerを通じてこのライブラリのクラスにアクセスするディレクトリにありautoload.php

ところで:Rest_Controllersはライブラリファイルなので、末尾にControllerの名前が付いているとは思いません。あなたのコメントを通じ

編集

私は、あなたが実際にREST_Controllerから延長し、あなたのコントローラのすべてを意味してしまった、とあなたはすべてのコントローラファイルの先頭に、それを必要としたくありません。

ソリューション:ディレクトリYourProject/application/core/

  1. 移動REST_Controller.php
  2. $config['subclass_prefix'] = 'MY_';

$config['subclass_prefix'] = 'REST_';に変更ライン119 YourProject/application/config/config.phpで次にCodeigniter自動的REST_Controllerをロードします。

しかしsubclass_prefix設定は、グローバルな効果を持っており、あなたはので、私は最善の方法は、あなたがディレクトリ./application/core/MY_Controllerクラスを作成し、この新しいファイルの一番下にREST_Controllerが必要だと思う最小限の変更を行うために、REST_Conttoller.phpの場所を変更する必要があります。 CIロードMY_controllerの場合、自動的にREST_Controllerも必要になります。

お知らせ:MY_ControllerCI_Controller

+0

<?php defined('BASEPATH') OR exit('See you next time.'); //APPPATH.'core/' location class MY_Controller extends CI_Controller { public function __construct() { parent::__construct(); require APPPATH . 'libraries/REST_Controller.php';//this constant ends with slash already } } 

さて、あなたはREST_Controllerを使用したいすべてのコントローラでは、このようなコードを持って:あなたはAPPPATH.'core/'場所にMY_Controller.phpファイルがない場合は、ここで提示されるよう 、1を作成し、それを使用します私のすべてのコントローラはREST_Controllerを拡張します。クラスREST_Controller {}を拡張する前に使用しなければならないので、$ this-> rest_controllerを使用することはできません。クラスのユーザーはREST_Controller {}を拡張します。 – Sasa

+0

私は自分の答えを編集して解決策を提供します@ Sasa –

+0

編集@Sasaを参照 –

1

から延びる必要ファイルを入れてその後REST_Controllerを使用する必要がある任意のコントローラにそれを拡張し、MY_Controllerクラスのコンストラクタに含めます。

<?php defined('BASEPATH') OR exit('See you next time.'); 

//example controller 
class Api extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    //bare example method 
    public function some_get() 
    { 
     echo '<pre>', var_dump('Some REST_Controller code logic here'), '</pre>'; 
    } 
} 
+0

私はこのソリューションで管理することができなかった、エラー404が見つかりませんでした。 – Sasa

+0

私は、これはexampleメソッドを持つコントローラの例であると書いています。あなたの質問をどうやって正確に使ったのか、あなたの質問を更新してください。 – Tpojka