2016-07-26 19 views
0

私はJavaの開発者です(私はよくJavaのMVC Webアプリケーションを開発するためにSpring MVCを使用しています)。PHPの知識が非常に少ないので、CodeIgniter 2.1.3を使用するPHPプロジェクトで作業する必要があります。このCodeIgniterコントローラクラスはどのくらい正確に動作しますか?

コントローラがどのように動作するのか、いくつかの疑問があります。CodeIgniter

1)Spring MVCではいくつかのアノテーション付きメソッドを持つコントローラクラスがあります。各メソッドは特定のHTTPリクエストを処理します(注釈はメソッドによって処理されるURLを定義します)。表示する必要があるビューの名前を返します。 CodeIgniterのの公式ドキュメントを読ん

このフレームワークのロジックはかなり異なっていることを私に思える:https://www.codeigniter.com/userguide3/general/controllers.html#what-is-a-controller

だから、でCodeIgniterのは、単一のURLを扱うクラスであることを理解しているようですアプリケーションはクラス名と同じ名前を持ちます。それが正しいか?

class garanzieValoreFlex extends CI_Controller { 

    ..................................................... 
    ..................................................... 
    ..................................................... 

    function __construct() { 
     parent::__construct(); 

     $this->load->helper(array('form', 'url')); 
     $this->load->library(array('form_validation','session')); 
    } 


    public function reset() { 

     $this->session->unset_userdata("datiPreventivo"); 
     $this->load->view('garanziavalore/garanzie_valore_questionario_bootstrap',array()); 

    } 


    public function index() { 

     $this->load->model('Direct'); 
     $flagDeroga = "true" ; 

     $this->session->userdata("flagDeroga"); 

     $data = $this->session->userdata("datiPreventivo"); 
     $this->load->model('GaranzieValoreFlexModel'); 

     $data = $this->session->userdata("datiPreventivo"); 
     $this->load->model('GaranzieValoreFlexModel'); 

     $this->load->view('garanziavalore/index_bootstrap',$data); 
    } 

    public function back() { 

     $this->load->model('Direct'); 
     $flagDeroga = "true" ; 

     $this->session->userdata("flagDeroga"); 
      $data = $this->session->userdata("datiPreventivo"); 
      $this->load->model('GaranzieValoreFlexModel'); 
      //$this->load->view('garanziavalore/garanzie_valore_questionario_bootstrap',$data); 
      $this->load->view('garanziavalore/index_tornaIndietro_bootstrap',$data); 

    } 


    ..................................................... 
    ..................................................... 
    ..................................................... 

} 

だから、私はURLに向けた基本的には、このコントローラハンドルのみHTTPリクエスト、理解して持っているものから:http://MYURL/garanzieValoreFlex

は、だから私は、このクラスを持っています。

soから、私は、以前のURLにアクセスしたときに実行される方法は、このラインであることインデックス()であることを理解持っているもの:

$this->load->view('garanziavalore/index_bootstrap',$data); 

garanziavalore/index_bootstrap.phpページを表示すること私は

が、それは私の推論です(それはビューディレクトリにする必要が標準です?)私のprohectの景色ディレクトリに見つかりました正しい?

もしそうであれば、私はIDに渡すビューをロードしていますまた、$ Iは、ページに表示することができるデータを含むモデルだと思います変数は、この変数はによって取得されたデータ:

$data = $this->session->userdata("datiPreventivo"); 

この行は正確には何ですか?

最後の疑問は、他のバックを関連している()私は、以前のコントローラで発見した方法:それは完全にカスタムする前に、このアプリケーションに取り組む開発者によって定義されたCodeIgniterの CI_Controllerクラスか何かの方法であり、私?

答えて

1

コントローラーは複数のURLを処理でき、クラスgaranzieValoreFlexはそのようなクラスの例です。

URL http://MYURL/garanzieValoreFlexは、メソッドを呼び出します。

のURL http://MYURL/garanzieValoreFlex/backhttp://MYURL/garanzieValoreFlex/resetは、それぞれのクラスのback()reset()メソッドを呼び出します。これらの2つの機能は、拡張クラスCI_Controllerへのカスタム追加です。

codeigniter(CI)のURLは、パターンに従いますexample.com/class/function/argument/ 関数セグメントと引数セグメントはオプションです。

URLがexample.com/classなどのクラス名のみを使用する場合、CIはindex()メソッドが存在する場合はそれを探して呼び出します。 index()が存在しない場合は404 Page Not Foundと表示されます。

あなたの推理について約$this->load->view('garanziavalore/index_bootstrap',$data);が正しいです。このようなファイルをビューディレクトリに置くのが標準です。オプションで、サブディレクトリ/views/garanziavalore/のように使用できます。

CIは、異なるクラス(ライブラリ)を特定のパスに関連付けるファイル構造を使用します。コントローラ、モデル、およびビュークラスはそれぞれのフォルダに格納されます。次に、loaderクラスは、与えられたクラスの "型"を探す場所を正確に認識します。たとえば、$this->load->view('garanziavalore/index_bootstrap',$data);を呼び出すと、ファイルindex_boostrap.php/application/views/garanzivalore/ディレクトリから取得するように、loaderクラスに指示します。コード$this->load->model('GaranzieValoreFlexModel');は、GaranzieValoreFlexModel.php/application/models/に使用するようローダに指示します。

loaderクラスの検索ドキュメントhere.

コード

$data = $this->session->userdata("datiPreventivo"); 

のラインはsessionクラス(ライブラリ)のuserdataメソッドを呼び出しています。セッションデータは配列として考えることができます。配列がこのように定義されている場合。 (これは達成されたものの擬似コードです)。

$userdata = array(); //empty array structure 

コール$this->session->userdata("datiPreventivo")$userdata["datiPreventivo"]の値を返す有効です。

1

あなたの推論は間違っています。私は本当にあなたが理解できるように、MVCがどのように機能するか、あなたが公式CodeIgniterのチュートリアルを読むことをお勧めします: http://www.codeigniter.com/userguide2/

CodeIgniterの3: http://www.codeigniter.com/user_guide/

CIコントローラ は、以下のリンク

CodeIgniterの2です異なるURLを扱います。コントローラにindexという関数を作成すると、コントローラにアクセスすると自動的にロードされます。あなたの場合、http://MYURL/garanzieValoreFlexはこの機能にアクセスする必要があります。 他の機能にアクセスするには、http://MYURL/garanzieValoreFlex/**MyFunction** (詳細はhttp://www.codeigniter.com/user_guide/general/urls.html?highlight=url#codeigniter-urlsを参照)が必要です。バック関数はユーザー定義関数です。

関連する問題