1

タイトルはそれをかなり要約しています。サードパーティからデータをインポートするスクリプトを作成したいと思います。CodeIgniterのActiveRecordクラスのインスタンス、またはコマンドラインから実行できるスクリプト内の特定のモデルのインスタンスを取得する方法はありますか?

4

2 に答える 2

2

内に CodeIgnited アプリケーションがignited/あり、コマンド ライン スクリプトが で実行されているとしcli/ます。フォルダのレイアウトは次のとおりです。

ignited/
    application/
    system/
    index.php
cli/
    mycli.php

cli/mycli.php今、あなたはいくつかのモデルを使いたいですignited/

ignitedまず、アプリで何かを行う必要があります。

  1. 既定のコントローラーを変更します (これは で設定されていますignited/application/config/routes.php)。例ignited/application/controllers/welcome.php:

    class Welcome extends CI_Controller {
    
        public function index()
        {
            $this->load->view('welcome_message');
        }
    }
    

    次のコードを追加します。

    if ($this->input->is_cli_request())
    {
        return;
    }
    

    したがって、次のようになります。

    class Welcome extends CI_Controller {
    
        public function index()
        {
            if ($this->input->is_cli_request())
            {
                return;
            }
            $this->load->view('welcome_message');
        }
    }
    
  2. テストのために、テストモデルを作成しましたignited/application/models/do_nothing_model.php

    class Do_nothing_model extends CI_Model {
    
        public function __construct()
        {
            parent::__construct();
        }
    
        public function do_nothing()
        {
            return "Do nothing";
        }
    
    }
    

わかった!でこれを試してくださいcli/mycli.php

require_once('../ignited/index.php');

$ci =& get_instance();

$ci->load->model('do_nothing_model');
echo $ci->do_nothing_model->do_nothing();

欠点:コマンドラインでデフォルトコントローラーのデフォルトアクションを実行できない

UPDATE 2012-06-08 : CodeIgniter Wikiより

于 2012-06-01T16:19:47.013 に答える
0

これが必要かどうかはわかりませんが、CLI から CI を実行する必要がある場合は、次のユーザーガイド リファレンスを参照してください。

http://codeigniter.com/user_guide/general/cli.html

明確にするために、Web に面する必要はありません。アプリをセットアップして、必要なコマンドを実行するだけです (コントローラー メソッドの入力)。

$ php index.php tools message "John Smith"

index.phpこの例では、CIのプライマリ ファイルを実行し、次にtoolsコントローラーとメソッドを実行しますmessage。"John Smith" はメッセージへの入力です (ファイル インポート用のマシン上のローカル ファイル参照である可能性があります)。

于 2012-06-01T14:18:55.950 に答える