2012-04-07 6 views
0

Ich habe diesen Controller in Code Zünder, die mitWarum erhalte ich einen unerwarteten T_VARIABLE-Fehler in meinem Code-Igniter-Controller?

class MyController extends CI_Controller { 
    private $data = array(
     'importantValueToPassToViews' => $this->Animal->getPrey(), 
    ); 
    ... 

Ich erhalte eine Fehlermeldung auf der Linie beginnt mit 'importantValueToPassToViews' beginnen (die dritte Zeile).

Parse error: syntax error, unexpected T_VARIABLE 

Warum?

+0

Sind Sie sicher, Tier ein Feld und nicht eine Klasse? – Gabber

+0

Animal ist ein automatisch geladenes Modell. –

+0

Aber es wird nicht automatisch geladen, bis der Controller aufgebaut ist. Sie erhalten einen Fehler aus mindestens zwei verschiedenen Gründen: P – landons

Antwort

4

Weil Sie eine Funktion in einer Klasseneigenschaftsdefinition nicht aufrufen können. Sie können es auf eine Konstante oder ein Array von Konstanten setzen.

Sie müssen, dass in den Konstruktor tun:

<?php 
class MyController extends CI_Controller { 

    private $data = array(); 

    public function __construct() 
    { 
     parent::__construct(); 

     $this->data['importantValueToPassToViews'] = $this->Animal->getPrey(); 
    } 
    // ... 
} 
+0

Vielen Dank. Das behebt den ursprünglichen PHP-Fehler. Wenn ich '$ data' jedoch in eine Ansicht mit' $ this-> load-> view ('viewPrey', $ data); 'übergebe, kann ich in der Ansicht nicht auf die Variable' $ wichtigValueToPassToViews' zugreifen. Es existiert anscheinend nicht. Ändert diese Methode die Variable $ data außerhalb des Bereichs der Konstruktorfunktion? –

+0

Nein, es sollte funktionieren. Übergeben Sie stattdessen "$ this-> data". – landons

+1

Und wie zum Teufel wissen Sie, wie Sie Autoload, aber nicht wissen, wie Sie Daten an eine Ansicht in CI übergeben? : P – landons

Verwandte Themen