2016-12-23 4 views
0

Ich habe TestController, die kein eigenes Modell hat. Ich verwende verschiedene Modelle, darunter das Trunk Model. Ich habe meine Funktion "call", die Methode "singlePckgCall" von Trunk Model verwenden möchte. Bis hier geht alles gut.Funktion verwendet Methode aus einer anderen Klasse als sie sollte

TestController

Diese Methode, die ich zu verwenden ist versucht, verwendet eine andere Methode, unten platziert - "callSingleNumber".

enter image description here

Und dann hält er an und schickt mir eine Fehlerseite:

Unknown Methode - yii \ base \ UnknownMethodException

Aufruf unbekannte Methode: Frontend \ Controller \ Testcontroller: : callSingleNumber()

Ich habe keine Ahnung, warum es c alles eine Methode von TestController, statt von Trunk Model, so wie ich es möchte. Im Ergebnis wird eine solche Methode nicht angezeigt, da sie in einer anderen Klasse existiert. Ich habe versucht, diesen Teil noch einmal manuell zu schreiben, aber es hat nicht geholfen.

Antwort

2

Sie rufen singlePckgCall statisch auf, also singlePckgCall Methode $this Instanz ist nicht verfügbar.

Ihr Problem zu lösen, können Sie

1) nennen statisch callSingleNumber in singlePckgCall: eine Instanz von Trunk Klasse

$action_id_array[$key] = self::callSingleNumber($numery[$i], TRUE); 

in Zeile 52

2) schaffen, so $ this ist verfügbar in singlePckgCall:

$instance = new Trunk(); 
$instance->singlePckgCall($numery); 
+0

Sie sollten u se 'static' statt' self'. Siehe [späte statische Bindungen] (http://php.net/manual/en/language.oop5.late-static-bindings.php) – topher

Verwandte Themen