Wie kann erstellen extends BaseController Controller in Yii 2
Als Titel, würde ich das erstellen benutzerdefinierter controller und überschreiben von core-controller in Yii 2,
und unten ist mein code.
/erstellen BaseController, ich habe diese Datei in root/Komponenten./
namespace yii\base;
use Yii;
class BaseController extends \Controller{
public function init() {
parent::init();
}
}
/* Extends BaseController.*/
namespace app\components;
use Yii;
class UsersController extends \BaseController
{
/* more function is here.*/
public actionIndex(){
echo _FUNCTION_;
}
}
Ich mehr ändern, aber dies nicht funktioniert, plz help me. Vielen Dank an alle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie Lesen über namespaces in PHP zuerst, dann lernen Sie ein bisschen über Yii 2 Stil und der Verwendung von namespaces und wie es organisiert in der spezifischen Anwendung (basic /advanced) Sie verwenden.
Welche Art von Funktionalität, die Sie hinzufügen möchten, um Ihren controller? Die meisten der Zeit, es besser zu überschreiben, die bestimmten controller (z.B. für web, es wird yii\web\Controller) und nicht die der Basisklasse.
Vorausgesetzt, Sie sind mit dem basic-Anwendung, der code sollte wie folgt Aussehen:
BaseController
UserController
Bemerken wie
UserController
baut Ihre benutzerdefiniertenBaseController
. Wenn Sie alle der app-Controller erweiternBaseController
können Sie die gleichen features/Funktionen, die auf allen app-Controller.Warum? Sagen Sie, dass Sie möchten, dass Ihre gesamte
frontend
werden login erforderlich. Normalerweise müssen Sie manuell ändern Sie die Regeln in jeweils einem eigenen Controller. Sie könnte erklären die Regeln inBaseController
alles zu machen, dass eine Anmeldung erforderlich ist, und schließen Sielogin
,error
,signup
, und andere Seiten, die Sie benötigen, um öffentlichen Zugriff auf.Etwas anderes für Einsteiger in Yii2 wissen sollten. In der "advanced" - Vorlage, die Sie tatsächlich haben mehrere apps. "frontend" und "backend" sind auch Ihre eigene app. Kann man eigentlich kopieren Sie die "frontend" oder "backend") - Verzeichnis und nennen Sie es so etwas wie "mainsite" und haben eine 3. app (einfach suchen Sie und benennen Sie alle Instanzen von "frontend" auf "mainsite". In der "Umgebungen" - Verzeichnis, können Sie kopieren frontend, nennen Sie es "mainsite" und ändern Sie es an Ihre Bedürfnisse anzupassen, so dass es Dateien können zusammengeführt werden, über
init
wenn nötig. Sie müssen auch Bearbeitenenvironments/index.php
eigene init-Umgebung."Konsole" ist eigentlich eine app auch, aber nicht für den Zugang zum web, sondern für den Zugriff über die Kommandozeile, in der Regel für Ihre eigenen Zwecke, wie die Behandlung von cron-jobs oder beschneiden die alten Daten. Vielleicht bieten Sie web-hosting, in der "console" ist, wo könnten Sie code hinzufügen, erstellen Sie Ihre hosting-Konto. Ich habe selten verwenden Sie die Konsole, aber es kann nützlich sein.
Die Letzte Sache, die ich erwähnen möchte, ist, dass Sie erstellen Ihre eigene app, aber Sie wollen! Das framework Yii2 ist nicht Ihre
basic
oderadvanced
app, es ist eigentlich in Ihrervendor
- Verzeichnis (Installation via Composer) 🙂 die Dateien, Die Sie arbeiten mit, sind eigentlich nur Yii Art der Verlegung die Dinge für Sie. Folgen Sie, was Sie tun, und Sie können erstellen Sie Ihre eigene Datei-Struktur, wie Sie wollen. Könnte man es verschrotten, und erstellen Sie Ihre eigenen Yii-app von Grund auf (nicht mit der advanced oder basic an alle!). Nicht eingeengt werden, umbasic
oderadvanced
!