====== Yii2 ====== [[https://www.yiiframework.com/doc/guide/2.0/en|The Definitive Guide to Yii 2.0]] [[https://www.youtube.com/watch?v=whuIf33v2Ug&ab_channel=freeCodeCamp.org|Youtube Crashkurs mit Beispiel]] ===== Installation ===== Benötigt XAMPP o.ä. und [[https://packagist.org|Composer]]. [[https://www.yiiframework.com/doc/guide/2.0/en/start-installation|Yii2 Installation]] * Basic Version: Single application in single folder * Advanced: Two applications in single folder (frontend & backend), herunterscrollen... Hier Basic. php ~/composer.phar create-project --prefer-dist yiisoft/yii2-app-basic yii2-test/ Laut ''composer help create-project'' werden auch dev Libs installiert. (Unterdrücken mit ''--no-dev'') Für den Debug Modus muss das Verzeichnis runtime/debug schreibbar sein. ===== Templates ===== * ''$this->head()'' inkludiert CSS Referenzen gemäss Assets Abhängigkeiten * ''Yii::$app'' referenziert auf das App Objekt. Variablen können über die Konfiguration angepasst werden, z.B. $app->language, $app->components, usw. ==== Class yii\bootstrap\NavBar ==== https://www.yiiframework.com/extension/yiisoft/yii2-bootstrap/doc/api/2.0/yii-bootstrap-navbar NavBar::begin([ 'brandLabel' => Yii::$app->name, // Name der Anwendung 'brandUrl' => Yii::$app->homeUrl, // URL der Anwendung 'options' => ['class' => 'navbar-expand-md navbar-dark bg-dark fixed-top'], 'innerContainerOptions' => ['class' => 'container-float w-100'], // normal wird inner Container mit der class 'container' ausgegeben 'renderInnerContainer' => false, // innerer Container nicht ausgeben ]); ==== Class yii\bootstrap\Nav ==== https://www.yiiframework.com/extension/yiisoft/yii2-bootstrap/doc/api/2.0/yii-bootstrap-nav /* Wird 'item' definiert, wird ein Untermenü generiert. */ /* Externe URL muss als String definiert werden. Array wird gemäss urlManager in die eingestellte Form gebracht. */ /* options betrifft den "äusseren" li-Tag, mit linkOptions können zusätzliche Parameter des 'a'-Tag definiert werden */ [ 'label' => 'ELGO', 'options' => ['class' => 'ms-auto'], 'items' => [ ['label' => 'Web', 'url' => 'https://www.elgo.li', 'linkOptions' => ['target' => '_blank'] ], ['label' => 'Configurator', 'url' => 'https://configurator.elgo.li', 'linkOptions' => ['target' => '_blank']], ] ], ===== Tools ===== * ''yii\helpers\ArrayHelper::merge'' Fügt mehrere Arrays zusammen, wobei spätere Werte die früheren überschreiben * ''Html::encode()'' übernimmt die HTML Codierung eines Strings * ''\yii\helpers\Url::to(['/site/logout']);'' wandelt die Url gemäss urlManager um. Wenn nicht das Nav Widget verwendet wird, müssen URLs entsprechend ausgegeben werden ===== Konfiguration ===== ==== Tabellen Präfix ==== https://www.yiiframework.com/wiki/42/how-to-make-customizable-db-table-prefixes-using-activerecord return [ ... 'tablePrefix' => 'sys_', ... ]; ===== Migrations ===== Der Tabellenpräfix sollte vorher gesetzt werden! php yii migrate/history Nun ist die Tabelle fürs Tracking vorhanden. Migrierung einer vordefinierten Migration mit Argument ''-migrationPath'': php yii migrate --migrationPath=@yii/rbac/migrations ==== Migration für Tabelle erstellen ==== php yii migrate/create create_videos_table --fields="id:string(16):notNull,title:string(32) ... created_by:integer(11):foreignKey(user)"