Ich möchte eine Klasse haben, in der ich alle meine Methoden, die jedes Mal, wenn jemand eine Seite lädt, setzen sollte, lassen Sie es InitRoutines aufrufen.So laden Sie die Klasse bei jedem Laden der Seite in der erweiterten App
In yii2 grundlegende App würde ich so etwas tun. Ich würde der confound-Datei von compontents eine Klasse hinzufügen und sie dem Bootstrap hinzufügen, so einfach.
Aber ich kann nicht herausfinden, wie es in fortgeschrittenen App tun, bevorzugt gemeinsam/config
config.php
$config = [
// ..
'components' => [
'InitRoutines' => [
'class' => 'app\commands\InitRoutines',
],
],
];
$config['bootstrap'][] = 'InitRoutines';
Und in InitRoutines I init Klasse haben, die alles, was ich laufen brauchen beim Laden der Seite.
InitRoutines.php
namespace app\commands;
use Yii;
use yii\base\Component;
use app\commands\AppHelper;
use app\commands\Access;
class InitRoutines extends Component
{
public function init()
{
parent::init();
Access::checkForMaintenance();
Yii::$app->language = AppHelper::getUserLanguageCode();
}
}
Wie kann ich erreichen, in fortgeschrittener App gleich?
Betrachten Sie eine benutzerdefinierte 'Controller' Klasse geerbt von' yii \ web \ Controller' zu schaffen. Dann können Sie Ihre Logik in die 'beforeAction' Methode einfügen. – Beowulfenator
@Beowultenator Wenn diese Lösung funktioniert, ist es viel besser als "yii \ web \ Controller" zu erweitern, weil es Ihnen die Arbeit der Änderung der generierten Controller-Deklaration erspart – deacs
@deacs ja, das war der Hauptzweck dieser Lösung – Ripper