Yii - Sử dụng bộ điều khiển
Bộ điều khiển trong các ứng dụng web nên mở rộng từ yii\web\Controllerhoặc các lớp con của nó. Trong các ứng dụng bảng điều khiển, chúng phải mở rộng từ yii \ console \ Controller hoặc các lớp con của nó.
Hãy để chúng tôi tạo một bộ điều khiển mẫu trong controllers thư mục.
Step 1 - Bên trong Controllers thư mục, tạo một tệp có tên ExampleController.php với đoạn mã sau.
<?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
]);
}
}
?>
Step 2 - Tạo một dạng xem ví dụ trong views/examplethư mục. Bên trong thư mục đó, hãy tạo một tệp có tênexample.php với đoạn mã sau.
<?php
echo $message;
?>
Mỗi ứng dụng có một bộ điều khiển mặc định. Đối với các ứng dụng web, trang web là bộ điều khiển, trong khi đối với các ứng dụng bảng điều khiển, nó là trợ giúp. Do đó, khihttp://localhost:8080/index.phpURL được mở, bộ điều khiển trang web sẽ xử lý yêu cầu. Bạn có thể thay đổi bộ điều khiển mặc định trong cấu hình ứng dụng.
Hãy xem xét đoạn mã đã cho -
'defaultRoute' => 'main'
Step 3 - Thêm đoạn mã trên vào phần sau 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;
?>
Step 4 - Loại http://localhost:8080/index.php trong thanh địa chỉ của trình duyệt web, bạn sẽ thấy rằng bộ điều khiển mặc định là bộ điều khiển mẫu.
Note - ID bộ điều khiển phải chứa các chữ cái tiếng Anh viết thường, chữ số, dấu gạch chéo lên, dấu gạch ngang và dấu gạch dưới.
Để chuyển đổi ID bộ điều khiển thành tên lớp bộ điều khiển, bạn nên làm như sau:
- Lấy chữ cái đầu tiên từ tất cả các từ được phân tách bằng dấu gạch nối và chuyển nó thành chữ hoa.
- Bỏ dấu gạch nối.
- Thay dấu gạch chéo về phía trước bằng dấu gạch chéo phía sau.
- Thêm hậu tố Bộ điều khiển.
- Thêm vùng tên bộ điều khiển.
Ví dụ
trang trở thành app\controllers\PageController.
bài báo trở thành app\controllers\PostArticleController.
người dùng / bài viết trở thành app\controllers\user\PostArticleController.
userBlogs / post-article trở thành app\controllers\userBlogs\PostArticleController.