私はCodeigniterが初めてで、OOP PHP。
コントローラ:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
echo $planet
コントローラーで、想定されていることを行います。もし私が echo $planet
ビューで未定義変数エラーが発生します。 $planet
は配列ではありません。なぜ$planet
変数がビューに渡されていますか?
私はこれが簡単で基本的な質問であることを知っています。
編集:さて、いじくり回した後、私はそれが動作するようになりました。変数が配列としてフォーマットされている場合にのみ、コントローラーからビューに変数を渡すことができますか?
ビューに配列を渡す必要があります。 CodeIgniterは自動的に$planet
を利用可能にします。
$data = array('planet' => $planet);
$this->load->view('main_view', $data);
これにより、ビューで$planet
を使用できます。
たとえば、次のことを行う場合:
$data = array('foo' => 'Hello', 'bar' => 'world');
$this->load->view('main_view', $data);
$foo
および$bar
がビューで使用可能になります。配列内のキーと値のペアは、ビュー内の変数に自動的に変換されます。
arrayまたはobjectのいずれかをビューに渡すことができます。その後、ビュー内の変数として配列キーにアクセスできます。
配列
public function index()
{
$this->load->model('main_model');
$planet_data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
オブジェクト
public function index()
{
$this->load->model('main_model');
$planet_data = new stdClass(); //Creates a new empty object
$planet_data->planet = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
From CodeIgniterのユーザーマニュアル :注:オブジェクトを使用する場合、クラス変数は配列要素に変換されます。
データを渡す方法に関係なく、次のように表示できます。
<?php echo $planet; ?>
配列の場合は、繰り返し処理する必要があります。または、オブジェクト、そのメンバー変数にアクセスします。
私の経験では、配列の使用はオブジェクトの使用よりも一般的です。
これは簡単にそれを行う方法です
public function index() {
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
ビューでこの方法で値にアクセスできます
echo $planet;
のように試してください:
public function index(){
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
そしてあなたの意見では、「$ planet」にアクセスできます。
モーダルに配列応答が含まれる場合:
public function solar() {
$data['earth'] = 'Earth';
$data['venus'] = 'Venus';
return $data;
}
次に、データを次のように表示します。
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
しかし、ビューでは、次のようなデータにアクセスできます。
echo $earth;
echo $venus;
応答が必要かどうかわからない場合は、次のようなコードを使用します。
public function index(){
$this->load->model('main_model');
$planet['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
ビューファイルでは、次のようにデータにアクセスできます。
print_r($planet);
どのデータが表示されるかわからない場合は、ビューでこのコードを使用してください:
print_r($this->_ci_cached_vars);
あなたはにURLの変数を渡すことができます
function regresion($value) {
$data['value'] = $value;
$this -> load -> view('cms/template', $data);
}
ビューで
<?php print_r($value);?>
ビューで配列を渡すと、配列のキーが自動的に変数になり、codeigniterによって使用可能になります。配列に渡す必要があるビューに変数を渡すことはできません
以下はあなたのコードです
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar(); // <--- Change this line
$this->load->view('main_view', $planet);
}
単にそれを変更する
public function index(){
$this->load->model('main_model');
$data['planet']= $this->main_model->solar(); // <--- to this
$this->load->view('main_view', $data);
}
あなたのビューでは、このように簡単にアクセスできます
echo $planet;