====== 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)"