Yii - moduły
Moduł to jednostka, która ma własne modele, widoki, kontrolery i prawdopodobnie inne moduły. Jest to praktycznie aplikacja wewnątrz aplikacji.
Step 1 - Utwórz folder o nazwie moduleswewnątrz katalogu głównego projektu. W folderze modułów utwórz folder o nazwiehello. Będzie to podstawowy folder dla naszego modułu Hello.
Step 2 - Wewnątrz hello folder, utwórz plik Hello.php z następującym kodem.
<?php
namespace app\modules\hello;
class Hello extends \yii\base\Module {
public function init() {
parent::init();
}
}
?>
Właśnie stworzyliśmy klasę modułową. Powinien znajdować się pod ścieżką podstawową modułu. Za każdym razem, gdy uzyskuje się dostęp do modułu, tworzona jest instancja odpowiadającej mu klasy modułu. Plikinit() Funkcja służy do inicjowania właściwości modułu.
Step 3- Teraz dodaj dwa kolejne katalogi w folderze hello - kontrolery i widoki. DodaćCustomController.php plik do folderu kontrolera.
<?php
namespace app\modules\hello\controllers;
use yii\web\Controller;
class CustomController extends Controller {
public function actionGreet() {
return $this->render('greet');
}
}
?>
Konwencją tworzenia modułu jest umieszczenie klas kontrolera w katalogu kontrolera w ścieżce bazowej modułu. Właśnie zdefiniowaliśmyactionGreet funkcja, która po prostu zwraca greet widok.
Widoki w module należy umieścić w folderze views w ścieżce bazowej modułu. Jeśli widoki są renderowane przez kontroler, powinny znajdować się w folderze odpowiadającym plikowicontrollerID. Dodajcustom folder do views teczka.
Step 4 - W katalogu niestandardowym utwórz plik o nazwie greet.php z następującym kodem.
<h1>Hello world from custom module!</h1>
Właśnie stworzyliśmy View dla naszych actionGreet. Aby skorzystać z nowo utworzonego modułu, należy skonfigurować aplikację. Powinniśmy dodać nasz moduł do właściwości modules aplikacji.
Step 5 - Zmodyfikuj plik config/web.php plik.
<?php
$params = require(__DIR__ . '/params.php');
$config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'components' => [ 'request' => [ // !!! insert a secret key in the following (if it is empty) - this is //required by cookie validation 'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO', ], 'cache' => [ 'class' => 'yii\caching\FileCache', ], 'user' => [ 'identityClass' => 'app\models\User', 'enableAutoLogin' => true, ], 'errorHandler' => [ 'errorAction' => 'site/error', ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => true, ], 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ], 'db' => require(__DIR__ . '/db.php'), ], 'modules' => [ 'hello' => [ 'class' => 'app\modules\hello\Hello', ], ], 'params' => $params,
];
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
return $config;
?>
Trasa dla kontrolera modułu musi zaczynać się od identyfikatora modułu, po którym następuje identyfikator kontrolera i identyfikator akcji.
Step 6 - Aby uruchomić actionGreet w naszej aplikacji powinniśmy skorzystać z następującej trasy.
hello/custom/greet
Gdzie hello to identyfikator modułu, custom to controller ID a pozdrawiam jest action ID.
Step 7 - Teraz wpisz http://localhost:8080/index.php?r=hello/custom/greet a zobaczysz następujący wynik.
Ważne punkty
Moduły powinny -
Może być używany w dużych aplikacjach. Powinieneś podzielić jego cechy na kilka grup. Każda grupa funkcji może zostać opracowana jako moduł.
Wielokrotnego użytku. Niektóre powszechnie używane funkcje, takie jak zarządzanie SEO lub zarządzanie blogiem, można opracować jako moduły, aby można je było łatwo ponownie wykorzystać w przyszłych projektach.