
طریقه استفاده از Controller ها در فریمورک Yii
Controller ها در برنامه های تحت وب (web application) باید از مسیر yii\web\Controller یا از طریق کلاس های فرزند خود، گسترش یابند. در برنامه های کنسول (console application)، آنها باید از مسیر yii\console\Controller یا کلاس های فرزند خود گسترش یابند.
برای مثال قصد داریم تا یک controller در پوشه controllers ایجاد کنیم.
مرحله 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 یک View بسازیم. بنابراین یک فایل به نام example.php با کد زیر ایجاد کنید.
<?php
echo $message;
?>
هر برنامه، یک کنترلرِ پیش فرض دارد. در برنامه های تحت وب (web application)، کنترلرِ پیش فرض، همان Controller است، در حالی که در برنامه های کنسول (console application)، کنترلر پیش فرض، help می باشد. بنابراین، وقتی آدرس http://localhost:8080/index.php باز می شود، کنترلرِ پیش فرض، که همان Controller است، درخواست را مدیریت می کند. شما می توانید کنترلرِ پیش فرض را در تنظیمات برنامه تغییر دهید.
کد زیر را در نظر بگیرید -
'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 را در آدرس بار مرورگر تان، تایپ کنید، مشاهده خواهید کرد که کنترلرِ پیش فرضتان example controller می باشد.
نکته: شناسه Controller یا Controller ID باید از حروف کوچک انگلیسی ، اعداد، /، خط فاصله و underscore یا زیرخط تشکیل شده باشد.
شما باید برای تبدیل controller ID به controller class name، کارهای زیر را انجام دهید -
- کلمات را با خط فاصله از هم جدا کنید و اولین حرف کلمات را بصورت حرف بزرگ تایپ کنید.
- خط فاصله ها را حذف کنید.
- علامت slash(/) رابا back slash (\)جایگزین کنید
- پسوند Controller را اضافه کنید.
- فضای نام Controller را اضافه کنید.
مثال ها
کنترلرِ مربوط به route یا مسیر page می شود app\controllers\PageController.
کنترلرِ مربوط به route یا مسیر post-article می شود app\controllers\PostArticleController.
کنترلرِ مربوط به route یا مسیر user/post-article می شود app\controllers\user\PostArticleController.
کنترلرِ مربوط به route یا مسیر userBlogs/post-article می شود app\controllers\userBlogs\PostArticleController.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…