Ich bin neu in Codeigniter und OOP PHP.
Regler:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
Wenn echo $planet
in der Steuerung ist, macht es das, was es tun soll. Wenn ich echo $planet
in der Ansicht sehe, erhalte ich einen undefinierten Variablenfehler. $planet
ist kein Array. Warum wird die Variable $planet
nicht an die Ansicht übergeben?
Ich weiß, das ist eine einfache und grundlegende Frage und es ist mir peinlich, dass ich nicht herausfinden kann, was ich falsch mache.
EDIT: Okay, nachdem ich mich ein bisschen herumgetüftelt habe, habe ich es zum Laufen gebracht. Können Variablen nur von Controller an View übergeben werden, wenn sie als Array formatiert sind?
Sie müssen ein Array an die Ansicht übergeben. CodeIgniter stellt Ihnen automatisch $planet
zur Verfügung.
$data = array('planet' => $planet);
$this->load->view('main_view', $data);
Damit können Sie $planet
in Ihrer Ansicht verwenden.
Zum Beispiel, wenn Sie Folgendes tun:
$data = array('foo' => 'Hello', 'bar' => 'world');
$this->load->view('main_view', $data);
$foo
und $bar
sind in Ihrer Ansicht verfügbar. Die Schlüssel-Wert-Paare im Array werden in der Ansicht automatisch in Variablen konvertiert.
Sie können der Ansicht entweder ein Array oder ein Objekt übergeben. Sie können dann als Variable in Ihrer Ansicht auf die Array-Schlüssel zugreifen.
Array
public function index()
{
$this->load->model('main_model');
$planet_data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
Objekt
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);
}
Aus CodeIgniters Benutzerhandbuch : Hinweis: Wenn Sie ein Objekt verwenden, werden die Klassenvariablen in Array-Elemente umgewandelt.
Unabhängig davon, wie Sie die Daten übergeben, können diese wie folgt angezeigt werden:
<?php echo $planet; ?>
Wenn es sich um ein Array handelt, müssten Sie es durchlaufen. Oder ein Objekt und dann auf seine Mitgliedsvariablen zugreifen.
Nach meiner Erfahrung ist die Verwendung eines Arrays häufiger als die Verwendung eines Objekts.
so geht das einfach
public function index() {
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
Jetzt können Sie aus Ihrer Sicht auf diesen Wert zugreifen
echo $planet;
Versuchen Sie es wie:
public function index(){
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
und aus Ihrer Sicht können Sie auf "$ planet" zugreifen. Das ist es. Akzeptieren Sie die Antwort, wenn es nützlich ist
sie können eine Variable in der URL an übergeben
function regresion($value) {
$data['value'] = $value;
$this -> load -> view('cms/template', $data);
}
In der Ansicht
<?php print_r($value);?>
In view übergeben wir array und der Schlüssel von array wird automatisch variabel und wird Ihnen vom Codeigniter zur Verfügung gestellt. Wir können nicht einfach Variablen übergeben, um anzuzeigen, dass wir array übergeben müssen
Unten ist Ihr Code
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar(); // <--- Change this line
$this->load->view('main_view', $planet);
}
Ändern Sie es einfach in
public function index(){
$this->load->model('main_model');
$data['planet']= $this->main_model->solar(); // <--- to this
$this->load->view('main_view', $data);
}
und aus Ihrer Sicht können Sie einfach so darauf zugreifen
echo $planet;
Wenn modal Array-Antwort enthält:
public function solar() {
$data['earth'] = 'Earth';
$data['venus'] = 'Venus';
return $data;
}
dann kannst du die daten so ansehen:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
Bei der Anzeige haben Sie jedoch folgende Zugangsdaten:
echo $earth;
echo $venus;
wenn Sie nicht wissen, dass Sie eine Antwort erhalten möchten, verwenden Sie folgenden Code:
public function index(){
$this->load->model('main_model');
$planet['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
und in View-Datei können Sie auf die Daten wie folgt zugreifen:
print_r($planet);
Wenn Sie nicht wissen, welche Daten angezeigt werden, verwenden Sie einfach diesen Code:
print_r($this->_ci_cached_vars);