Ich habe einen Konsolenbefehl, um eine Verbraucherzeit zu machen, UND ich muss wissen, wie ich ihn in einer Webanwendungsaktion in YII aufrufen (ausführen) kann.
%Vor%Ich möchte diesen Code ausführen.
Ich hatte das gleiche Problem - ich muss die Aktion vom Controller und vom Befehl
aufrufenIch sagte das gleiche Problem, weil es tatsächlich gleich - Sie haben eine Aktion, die Sie von der Konsole aus anrufen müssen, und rufen Sie es auch vom Controller.
If you need to call an action(command) as a part of controller action, then i think you need to modify this solution a little
. Oder ist meine Lösung genug für dich?
Also hier ist meine Lösung:
Erstellen Sie zuerst eine Aktion wie in Ссылка
angegeben %Vor%Dann wird in der Controller-Aktion wie gewohnt geladen:
%Vor%und im Befehl führe ich die Aktion so aus:
%Vor%Wenn wir akzeptieren, dass wir uns auf dem Linux-Server befinden, wäre das Beispiel für das reale Leben von Yii 1.1:
%Vor%Dadurch wird der Yii-Konsolenbefehl im Hintergrund ausgeführt.
Auch eine andere sehr saubere Lösung von cebe
auf gist :
Normalerweise sollten Sie in diesen Situationen einen Refactor durchführen.
Verschieben Sie den "allgemeinen" Code aus dem MyCommand und legen Sie ihn in eine Klasse im Ordner components
.
Jetzt können Sie einen beliebigen Kopf über den "normalen" Code setzen, ohne Ihre Funktionalität zu verändern. Zum Beispiel:
protected / Komponenten / Mywork.php:
%Vor%protected / controller / MyworkController.php:
%Vor%protected / commands / MyworkCommand.php:
%Vor%Dieser Ansatz vereinfacht das Testen, da Sie Mywork als eine Einheit außerhalb der von Ihnen verwendeten Ansicht testen können.
Tags und Links console-application yii