Контроллеры в веб-приложениях должны выходить из yii \ web \ Controller или его дочерних классов. В консольных приложениях они должны выходить из yii \ console \ Controller или его дочерних классов.
Давайте создадим пример контроллера в папке контроллеров .
Шаг 1 — Внутри папки Controllers создайте файл ExampleController.php со следующим кодом.
<?php namespace app\controllers; use yii\web\Controller; class ExampleController extends Controller { public function actionIndex() { $message = "index action of the ExampleController"; return $this->render("example",[ 'message' => $message ]); } } ?>
Шаг 2 — Создайте пример представления в папке views / example . Внутри этой папки создайте файл example.php со следующим кодом.
<?php echo $message; ?>
Каждое приложение имеет контроллер по умолчанию. Для веб-приложений сайт является контроллером, а для консольных приложений — справкой. Поэтому при открытии URL-адреса http: // localhost: 8080 / index.php контроллер сайта обработает запрос. Вы можете изменить контроллер по умолчанию в конфигурации приложения.
Рассмотрим данный код —
'defaultRoute' => 'main'
Шаг 3 — Добавьте приведенный выше код в следующий файл config / web.php .
<?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'), ], //changing the default controller 'defaultRoute' => 'example', '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; ?>
Шаг 4 — Введите http: // localhost: 8080 / index.php в адресной строке веб-браузера, вы увидите, что контроллер по умолчанию является примером контроллера.
Примечание . Идентификаторы контроллера должны содержать буквы английского алфавита в нижнем регистре, цифры, косую черту, дефисы и подчеркивания.
Чтобы преобразовать идентификатор контроллера в имя класса контроллера, вы должны сделать следующее:
страница становится app \ controllers \ PageController .
post-article становится приложением \ controllers \ PostArticleController .
user / post-article становится приложением \ controllers \ user \ PostArticleController .
userBlogs / post-article становится app \ controllers \ userBlogs \ PostArticleController .