2012-02-25 32 views
22

Tôi muốn vượt qua $data từ bộ điều khiển có tên poll đến results_view tuy nhiên tôi nhận được lỗi biến không xác định.Trình mã vạch: Truyền dữ liệu từ bộ điều khiển để xem

<?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> 
+0

$ dữ liệu phải là mảng không biến –

Trả lời

36

$data phải là một mảng hoặc một đối tượng: 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> 
+0

Woooww, Thankssssssssssss –

+0

tôi đã đọc bài viết về cách chuyển dữ liệu từ bộ điều khiển để xem trong CodeIgniter http: //www.cloudways.com/blog/how-to-pass-data-in-codeigniter/ –

+0

@Lawrence Tôi đã thử mã của bạn, đang hoạt động sau khi được nhấp nhưng trước đó Nếu tôi làm mới trang xem thì tôi nhận được biến Không xác định: Bạn có trợ giúp không? –

6

Quan điểm sẽ không gọi các dữ liệu 'dữ liệu'

Bộ điều khiển sẽ bao gồm một chỉ số kết hợp (không chắc chắn nếu đó là đúng danh pháp) cho dữ liệu ví dụ như 'thứ' tìm kiếm do đó $data['stuff']

bạn muốn echo trong chế độ xem như vậy: echo $stuff; không phải echo $data;

Tôi là người viết mã thấp nhưng thực sự thích CodeIgniter vì vậy xin lỗi nếu tôi có lừa này về tit.

Một điều nữa - chắc chắn chức năng hàm tạo của bạn là một chút lãng phí. Tất cả việc tải thư viện và người trợ giúp được thực hiện bằng tệp tự động tải.

+0

Thực sự đã giúp :) –

11

Trong điều kiện đơn giản,

$ data ['a'] trong bộ điều khiển trở thành $ a trong chế độ xem của bạn. (Dữ liệu $ sẽ không tồn tại trong chế độ xem của bạn, chỉ có chỉ mục sẽ có sẵn)

ví dụ:

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

view: 
echo $hello; 
1

Trong điều khiển của bạn, bạn có thể vượt qua

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

Theo quan điểm của bạn, bạn có thể gọi

echo $poll; 
4

Bạn chỉ cần tạo một mảng, bạn sử dụng CodeIgniter phải không?

Ví dụ trên bộ điều khiển:

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

Trong de trang "results_view" bạn chỉ cần:

<?php echo $hello;?> 

Obs: Bạn có thể tạo n dữ liệu ngay, chỉ cần chú ý trong tên và làm cho nó một mảng.

Obs²: Để sử dụng dữ liệu, sử dụng khóa của mảng có âm vang.

+0

Tôi đã thử mã của bạn, đang hoạt động sau khi được nhấp nhưng trước đó Nếu tôi làm mới trang, tôi nhận được biến Không xác định: xin chào. Bất kỳ giúp đỡ? –

1

Ok vì vậy tôi cuối cùng cũng đã giải quyết được.Bạn thực sự cần có một mô hình (nó sẽ giúp rất nhiều)

trong mô hình của bạn làm điều gì đó như

Mẫu

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 
); 
    returb $obj; 
} 
} 

Bây giờ nếu bạn có nhiều hơn một id nói tên của cuộc bình chọn # bạn có thể thêm vào mảng. Bây giờ trong khiển bạn làm

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); 
} 

Và cuối cùng trong XEM đặt

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

Đây là một trợ giúp lớn. Tôi đã tìm ra nó bằng cách kiểm tra và nó hoạt động cho tôi.

0

Trong điều khiển:

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

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

Theo quan điểm:

print_r($result); // print the array in view file 
0

Tôi đã thấy tất cả các câu trả lời ở trên vì vậy đây là những gì tôi làm khi tôi phải nạp dữ liệu từ bộ điều khiển để quan điểm của tôi. Để Vượt qua dữ liệu Để nhìn từ bộ điều khiển:

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 ]); 

} 

Và Tại View Side Bạn chỉ có thể lấy dữ liệu: Để hiển thị Bạn chỉ có thể sử dụng echo, print, print_r. Và nếu bạn muốn lặp lại nó, bạn cũng có thể làm điều đó.

0

bạn có thể thực hiện theo cách này $ data ['hello'] = "hello";

trong chế độ xem echo $ hello;

0

Trong điều khiển:

public function sản phẩm() {

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

"đối tượng": "khoa học máy tính");

dữ liệu từ mẫu để điều khiển dữ liệu

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

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

$ từ bộ điều khiển để xem

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

Và để truy cập vào xem tập tin views/user.php

<?php echo $data; 
foreach($tableRows as $row){ echo 
$row['startData']; } ?> 
Các vấn đề liên quan