it-swarm.com.de

Codeigniter: Daten werden vom Controller an die Ansicht übergeben

Ich möchte $data von dem Controller mit dem Namen poll an den results_view übergeben, jedoch erhalte ich einen undefinierten Fehler. 

<?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>
30
Andrew Lynch

$data sollte ein Array oder ein Objekt sein: 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

In einfachen Worten, 

$ data ['a'] im Controller wird in Ihrer Ansicht zu $ ​​a. ($ data ist in Ihrer Ansicht nicht vorhanden, nur der Index wird verfügbar.)

z.B.

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

view:
echo $hello;
13
itachi

Die Ansicht würde die Daten nicht "Daten" nennen

Der Controller würde einen assoziativen Index (nicht sicher, ob das die richtige Nomenklatur ist) für Daten enthalten, z. B. "Zeug", das so aussieht $data['stuff']

Sie würden echo in der Ansicht so: echo $stuff; nicht echo $data;

Ich bin ein kleiner Code-Fiedler, aber ich mag CodeIgniter wirklich. Entschuldigen Sie mich, wenn ich diesen Arsch über Tit habe.

Eine weitere Sache - Ihre Konstruktorfunktion ist sicherlich eine Verschwendung. Das Laden der Bibliotheken und Hilfsprogramme erfolgt mit der Autoload-Datei.

6
Tom

Sie müssen nur ein Array erstellen, verwenden Sie den Codeigniter, oder?

Beispiel am Controller:

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

In der Seite "results_view" müssen Sie nur:

<?php echo $hello;?>

Obs: Sie können n Daten erstellen, achten Sie einfach auf den Namen und machen Sie daraus ein Array.

Obs²: Um die Daten zu verwenden, verwenden Sie den Schlüssel des Arrays mit einem Echo.

5
Space

Sie können eine Eigenschaft erstellen $data = []; in CI_Controller (Pfad: system/core/Controller.php) und speichern Sie alle Daten, die in der Ansicht angezeigt werden sollen. Sie können allgemeine Daten wie Sprachen, Menüs usw. in CI_Controller laden. Außerdem können Sie spezielle Daten für die Anzeige in der Steuerung hinzufügen. (Beispiel: $this->data['message'] = "Hello world";) Schließlich können Sie $this->data übergeben, um die Ansicht beim Laden anzuzeigen (Beispiel: $this->load->view('view_name',$this->data);)

Ich hoffe, dies wird dir helfen

3
Farhad Misirli

sie können es so machen

definiertes Array in Controller

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

und Variable übergeben an view

echo $hello; 
1

Im Controller:

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

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

Im Hinblick auf:

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

Ok, also habe ich es endlich gelöst. Sie sollten wirklich ein Modell haben (es hilft viel)

In deinem Modell mache so etwas 

Modell

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

Wenn Sie mehr als eine ID haben, sagen Sie den Namen der Umfrage #, den Sie in Array hinzufügen können. Jetzt in deinem 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);
}

Und schließlich inVIEWput 

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

Das ist eine große Hilfe. Ich habe es beim Testen herausgefunden und es funktioniert für mich. 

Wenn du passierst

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

und erhalten Sie Daten zu Ihrer Ansicht als

<?php echo $data;?>

Es wird nicht funktionieren, weil ich dieses Muster nicht verstanden habe. Wenn Sie den Wert vom Controller zur Ansicht übergeben möchten, können Sie Folgendes versuchen:

controller -

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

dann können Sie aus Ihrer Sicht diese Daten erhalten durch -

<?php echo $any-name;?>

Hoffe das hilft dir.

1

In Ihrem Controller können Sie passieren

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

Aus Ihrer Sicht können Sie anrufen

echo $poll; 
1
VEER

Im Controller:

öffentliches Funktionsprodukt () {

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

"Fach": "Informatik"); 

Daten vom Modell zum Controller

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

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

$ Daten vom Controller zur Ansicht

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

Und in der Ansichtsdatei auf Views/user.php zugreifen

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

Anstatt 

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

Tun 

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

In Ihrer Controller-Datei sendet der Controller data mit Hallo als string an results_view und in Ihrer View-Datei können Sie einfach darauf zugreifen 

echo $hello;
0
Ali Haider

Ich habe alle obigen Antworten gesehen, also hier, was ich mache, wenn ich die Daten aus der Steuerung in meine Ansicht laden muss. So übergeben Sie die Daten Vom Controller aus in die Ansicht:

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

}

Und auf der Ansichtsseite können Sie diese Daten einfach abrufen: Anzeige Sie können einfach echo, print, print_r verwenden. Und wenn Sie darüber hinweglaufen möchten, können Sie dies auch tun. 

0
ankit suthar