مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

طریقه استفاده از Action ها در فریمورک Yii


برای ایجاد یک action در یک کلاس controller، شما باید یک متد عمومی که نام آن با کلمه ی action شروع می شود را تعریف کنید. داده های خروجی از یک action، همان پاسخی است که باید به کاربر نهایی ارسال شود.

مرحله 1 – در این مرحله قصد داریم، اکشنِ hello-world را در ExampleController تعریف کنیم.

<?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

         ]);

      }

      public function actionHelloWorld() {

         return "Hello world!";

      }

   }

?>

مرحله 2 - در نوار آدرس مرورگر تان http://localhost:8080/index.php?r=example/hello-world را تایپ کنید. آنچه را که مشاهده خواهید کرد، می توانید در تصویر زیر ببینید.

شناسه های اکشن یا Action ID ها معمولا  افعالی، مانند ایجاد(create)، به روز رسانی(update)، حذف(delete) و غیره را به خود می گیرند. زیرا اغلب action ها  برای انجام یکسری تغییرات، در پایگاه داده ها و منابع طراحی شده اند.

شناسه های اکشن یا Action ID ها، باید شامل این کاراکترها باشند : حروف کوچک انگلیسی ، اعداد، فاصله ها و زیرخط(underscore).

دو نوع action وجود دارد: داخلی (inline) و مستقل (standalone).

اکشن های داخلی (Inline actions) در کلاس controller تعریف می شوند. نام این actionها از action ID ها به این صورت به دست می آیند -

  • اولین حرف تمام کلمات را در action ID به حروف بزرگ تبدیل کنید.
  • تمام فاصله ها را حذف کنید.
  • پیشوند Action را اضافه نمایید.

مثالها -

  • شاخص ها به actionIndex تبدیل می شوند.
  • اکشن hello-world (که در مثال بالا مشاهده کردیم) به actionHelloWorld تبدیل می شود.

اگر قصد دارید مجدداً همان action را در جاهای مختلف، استفاده کنید، باید آن را به صورت یک action مستقل (standalone action) تعریف نمایید.

یک class action مستقل ایجاد کنید

برای ایجاد یک اکشن کلاس مستقل، باید yii\base\Action  یا یک کلاس فرزند را گسترش دهید و یک متد run() را پیاده سازی کنید.

مرحله 1 - یک پوشه به نام Components در root پروژه یا پوشه اصلی پروژه ایجاد کنید. داخل آن پوشه یک فایل با نام GreetingAction.php با کد زیر ایجاد کنید.

<?php 
   namespace app\components;
   use yii\base\Action;
   class GreetingAction extends Action {
      public function run() {
         return "Greeting";
      }
   }
?>

ما یک action با قابلیت استفاده مجدد، ایجاد کردیم. ما برای استفاده از آن در ExampleController ، باید action خود را در action map با overriding کردن متد ()actions مقداردهی کنیم.

مرحله 2 - فایل ExampleController.php را به صورت زیر تغییر دهید.

<?php
   namespace app\controllers;
   use yii\web\Controller;
   class ExampleController extends Controller {
      public function actions() {
         return [
            'greeting' => 'app\components\GreetingAction',
         ];
      }
      public function actionIndex() {
         $message = "index action of the ExampleController";
         
         return $this->render("example",[
            'message' => $message
         ]);
      }
      public function actionHelloWorld() {
         return "Hello world!";
      }
   }
?>

متد ()actions ، یک آرایه برمی گرداند.که مقادیر آنها نام کلاس و کلید های آنها action ID هستند.

 

مرحله 3 - آدرس http://localhost:8080/index.php?r=example/greeting را در آدرس بار مرورگرتان وارد کنید. آنچه مشاهده خواهید کرد به صورت زیر خواهد بود.

مرحله 4 - همچنین می توانید با استفاده از تعریف  action ،کاربران را به URL های دیگر هدایت یا Redirect کنید. action زیر را به ExampleController.php اضافه کنید.

public function actionOpenGoogle() {
   // redirect the user browser to http://google.com
   return $this->redirect('http://google.com');
} 

حال اگر شما آدرس http://localhost:8080/index.php?r=example/open-google را در آدرسبار مرورگرتان وارد کنید ، به http://google.com هدایت می شوید.

Action method ها می توانند پارامترهایی را بگیرند که action parameters نامیده می شوند. مقدار آنها را می توان با استفاده از $_GET و نام پارامتر، به عنوان کلید (key)، بازیابی کرد.

مرحله 5 - action زیر را به کنترلر ExampleController اضافه می کنیم.

public function actionTestParams($first, $second) {
   return "$first $second";
}

مرحله 6 - آدرس http://localhost:8080/index.php?r=example/testparams&first=hello&second=world را در نوار آدرس مرورگر وب خود وارد کنید، خروجی ای که مشاهده خواهید کرد مطابق با تصویر زیر خواهد بود.

هر controllerی یک action پیش فرض دارد. هنگامی که یک مسیر فقط حاوی controller ID است، به این معنی است که action پیش فرض، درخواست شده است. action پیش فرض، اکشنِ index است. شما به راحتی می توانید، این property را در کنترلر override کنید.

مرحله 7 - به این ترتیب ExampleController را به شکل زیر تغییر می دهیم.

<?php
   namespace app\controllers;
   use yii\web\Controller;
   class ExampleController extends Controller {
      public $defaultAction = "hello-world";
      /* other actions */
   }
?>

مرحله 8 - حالا اگر به آدرس http://localhost:8080/index.php?r=example بروید، تصویر زیر را مشاهده خواهید کرد.

برای انجام این درخواست، controller چرخه زیر را دنبال می کند:

متد init() در yii\base\Controller فراخوانی می شود.

controller یک action بر اساس Action Id ایجاد می کند.

controller به ترتیب متد beforeAction() را از برنامه وب، ماژول و کنترلر فراخوانی می کند.

controller اکشن را اجرا می کند.

controller به ترتیب متد afterAction () را از برنامه وب، ماژول و کنترلر فراخوانی می کند.

اپلیکیشن نتیجه ی اجرای اکشن را به عنوان جواب درنظر می گیرد.

نکات مهم

controller ها باید :

بسیار کم حجم باشند. بنابراین هر action باید از تعداد کدهای کمی تشکیل شده باشد.

از view ها برای نمایش پاسخ برای کاربر استفاده کنید.

کلمه HTML را قرار ندهید.

به داده های درخواست، دسترسی داشته باشید.

متدهای model ها را فراخوانی کنید.

داده های درخواست را پردازش نکنید، زیرا آنها باید در model پردازش شوند.

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید