web-dev-qa-db-ja.com

Codeigniter:コントローラーからビューにデータを渡す

$datapollという名前のコントローラーからresults_viewしかし、未定義の変数エラーが発生しています。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Poll extends CI_Controller {

    public function __construct()
       {
            parent::__construct();
            $this->load->database();
            $this->load->helper('form');
       }

    public function index()
    {

        $this->load->view('poll_view',$data);
    }

    public function vote()
    {
        echo "Voting Successfull";
        $this->db->insert('votes',$_POST);
    }

    public function results()
    {
        echo "These are the results";
        //$query = $this->db->get('votes');
        $data = "hello";
        $this->load->view('results_view', $data);

    }
}

Results_view.php

<html>
<?php echo $data; ?>
</html>
29
Andrew Lynch

$dataは配列またはオブジェクトである必要があります。 http://codeigniter.com/user_guide/general/views.html

$data = array(
    'title' => 'My Title',
    'heading' => 'My Heading',
    'message' => 'My Message'
);

$this->load->view('results_view', $data);

results_view.php

<html>
<?php 
//Access them like so
echo $title.$heading.$message; ?>
</html>
43

簡単な言葉で、

コントローラの$ data ['a']は、ビューでは$ aになります。 ($ dataはビューに存在せず、インデックスのみが利用可能になります)

例えば.

Controller:    
$data['hello']='hellow world';

view:
echo $hello;
14
itachi

配列を作成するだけで、codeigniterを使用できますか?

コントローラーの例:

$data['hello'] = "Hello, world";
$this->load->view('results_view', $data);

ページ「results_view」では、次のことを行うだけです。

<?php echo $hello;?>

Obs:n個のデータを作成し、名前に注意して配列にすることができます。

Obs²:データを使用するには、エコーのある配列のキーを使用します。

6
Space

ビューはデータを「データ」と呼びません

コントローラには、データの連想インデックス(正しい命名法かどうかはわかりません)が含まれます。たとえば、 'stuff'のように見える$data['stuff']

あなたはビューでechoだから:echo $stuff;ではなくecho $data;

私は非常に低レベルのコードフィドラーですが、CodeIgniterが本当に好きなので、このシジュウカラについてお尻を持っているならすみません。

もう1つ-コンストラクター関数は確かに少し無駄です。ライブラリとヘルパーのロードはすべて、自動ロードファイルを使用して行われます。

6
Tom

プロパティ_$data = []_;を作成できます。 CI_Controller(path:system/core/Controller.php)内で、ビューに表示するすべてのデータを保存します。 Uは、CI_Controllerの言語、メニューなどの一般的なデータをロードできます。また、コントローラーで表示するための特別なデータを追加できます。 (例:_$this->data['message'] = "Hello world";_)最後に、ビューのロード時に表示する_$this->data_を渡すことができます(例:$this->load->view('view_name',$this->data);

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

3
Farhad Misirli

このようにすることができます

controllerで定義された配列

$data['hello'] = "hello";

そして変数をviewに渡します

echo $hello; 
2

コントローラー内:

$data["result"] = $this->login_model->get_login(); // Get array value from DB..

$this->load->view('login-form',$data); // Pass the array to view 

ビューで:

print_r($result);  // print the array in view file
1
kulandai yesu

わかりましたので、ようやく解決しました。あなたは本当にモデルを持っているべきです(それは大いに役立ちます)

あなたのモデルで次のようなことをしてください

モデル

class poll_model extends CI_MODEL {

 function __construct() {
   $this-load->database(); 
 }

 function get_poll {
   $this->db->query("SELECT * FROM table");
   $row = $query->row();

   $obj = array(
    'id' => $row->id
  );
   return $obj;
 }
}

IDが複数の場合、今度はpoll#という名前があれば、配列に追加できます。 controller do

class Poll extends CI_Controller {

public function __construct()
   {
        parent::__construct();
        $this->load->database();
        $this->load->helper('form');
        $this->load->model('poll_model');
   }

public function index()
{
    $data["a"] = $this->poll_model->get_poll();
    $this->load->view('poll_view',$data);
}

そして最後に[〜#〜] view [〜#〜] put

<? echo $a["id"]; ?>

これは大きな助けです。私はテストによってそれを理解し、それは私のために機能します。

合格したら

$data = your code
$this->load->view('your-page', $data);

ビューのデータを取得します

<?php echo $data;?>

Ciはこのパターンを理解していなかったため、機能しません。あなたがこれを試すことができるように、ビューにコントローラから値を渡したい場合-

コントローラー-

$data['any-name'] = your values;
$this->load->view('your-page', $data);

ビューでこのデータを取得するには-

<?php echo $any-name;?>

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

1

あなたのコントローラーで渡すことができます

$data['poll'] = "Your results";

あなたの見解では、あなたは呼び出すことができます

echo $poll; 
1
VEER

コントローラ内:

パブリック関数product(){

$data = array("title" => "Books", "status"=>"Read","author":"arshad","company":"3esofttech",

"subject": "コンピューターサイエンス");

モデルからコントローラーへのデータ

$this->load->model('bookModel');
$result = $this->bookModel->getMoreDetailsOfBook();

**Add *$result* from model to *$data* array**  
$data['tableRows'] = $result;

コントローラーからビューへの$ data

$this->load->view('admin/head',$data);

およびビューファイルでアクセスするには views/user.php

<?php  echo $data;
 foreach($tableRows as $row){ echo
 $row['startData']; } ?>
0
Arshad Syed

の代わりに

$data = "hello";
$this->load->view('results_view', $data);

行う

$data['hello'] = 'hello';
$this->load->view('results_view', $data);

コントローラーファイルとコントローラーでdata having hello asstringをresults_viewと単にアクセスできるファイルを表示する

echo $hello;
0
Ali Haider

上記のすべての答えを見てきましたので、コントローラーからビューにデータをロードする必要がある場合の対処方法を次に示します。データをコントローラーからビューに渡すには:

public function your_controller(){

   // Your Necessary Code 
   // You have the $data, $data2, $data3 to post to the view.

   $this->load->view('your_view_directory or view_page',['data'=>$data, 'data2'=>$data2, 'data3'=>$data3... so on ]);

}

ビュー側では、そのデータを簡単に取得できます。表示するにはechoprintprint_r。そして、それをループしたい場合は、同様にそれを行うことができます。

0
ankit suthar