1

codeigniter の MVC 構造のモデルとビュー フォルダーを、通常のパスに関係なく別の場所に配置できますか?

application/views
application/models

他の場所に、言ってみましょう

abc/views
pqr/models

プロジェクトフォルダの外。可能であれば、どうすればそれを達成できますか。

前もって感謝します

4

4 に答える 4

3

CodeIgniter の現在の安定版には、 modelsandパスをカスタマイズする機能はありません(CI 3.x では、 and と同様にパスを変更できます)viewsviewapplicationsystem

viewsただし、典型的なおよびmodelsフォルダーの外にファイルをロードできます。

ファイルへのパスは相対です。../したがって、パスの 1 つのレベルに移動するために使用できます。

たとえば、 のabc近くapplicationにフォルダが配置されている場合は、 を使用../../abcしてそのフォルダに到達する必要があります。

以下の例を見てください。

モデル:

class Model_name extends CI_Model {

    public function baz($value='')
    {
        return $value;
    }

}

コントローラ:

class Foo extends CI_Controller {

    public function bar()
    {
        $this->load->model('../../pqr/models/model_name');

        $data['var'] = $this->model_name->baz('Yes It Works!');

        $this->load->view('../../abc/views/view_name', $data);
    }

}

意見:

<?php echo $var; ?>

サンプルのフォルダ構造は次のとおりです。

application
system
pqr
   /models
          /model_name.php
abc
   /views
         /view_name.php

補足として:pqrまたはabcディレクトリへの直接アクセスが制限されていることを確認してください。.htaccessの内容を含むファイルをそれらの中に追加しますDeny from all

于 2013-07-24T12:57:21.680 に答える
1

「アプリケーション」フォルダー外のモデルとビューをカスタマイズするには、次の簡単な手順に従います。

  • My_Loader.php「application/core」ディレクトリにファイルを作成します
  • 次のコードをカスタムにコピーしますMy_Loader.php

    class MY_Loader extends CI_Loader {
    
    function mymodel($model, $folder = '',$vars = array(), $return = FALSE) {
    
        array_push($this->_ci_model_paths, "");
        parent::model($model);
    }
    
    
    function myview($folder, $view, $vars = array(), $return = FALSE) {
            $this->_ci_view_paths = array_merge($this->_ci_view_paths, array(APPPATH . '../' . $folder . '/' => TRUE));
            return $this->_ci_load(array(
                    '_ci_view' => $view,
                    '_ci_vars' => $this->_ci_object_to_array($vars),
                    '_ci_return' => $return
            ));
    }
    
    • ファイルを保存し、コントローラでモデル (アプリケーション フォルダの外にある) を次のように呼び出してロードします。

    $this->load->mymodel('folder/model');

ビューについては、

$this->load->myview('views','view_dir/view-php-file', $data);
于 2014-06-27T21:07:31.573 に答える
0

ビューとモデルを別の場所に移動できるかどうかはわかりませんが、アプリケーション フォルダーの場所を選択した場所に変更できます。

アプリケーション ディレクトリを別の場所に移動し、index.php ファイルを開き、$system_folder 変数と $application_folder 変数に新しいパス値を設定します。

参照: http://ellislab.com/codeigniter/user-guide/installation/index.html

これが役に立てば幸いです。

于 2013-07-24T12:43:18.787 に答える