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

Field ها در فریمورک Yii


با استفاده از متدهای overrides () و extraFields () می توانید تعریف کنید که چه اطلاعاتی را می توان در پاسخ (response) قرار داد. تفاوت بین این دومتد در این است که اولی مجموعه ای از فیلد های پیش فرض را تعریف می کند که باید در پاسخ گنجانده شوند در حالی که دومی فیلدهای اضافی را تعریف می کند، که اگر یک کاربر نهایی یک کوئری با پارامتر expand درخواست کند، ممکن است در پاسخ گنجانده شوند.

مرحله 1 - مدل MyUser را اینگونه تغییر دهید.

<?php
   namespace app\models;
   use app\components\UppercaseBehavior;
   use Yii;
   /**
   * This is the model class for table "user".
   *@property integer $id
   * @property string $name
   * @property string $email
   */
   class MyUser extends \yii\db\ActiveRecord {
      public function fields() {
         return [
            'id',
            'name',
            //PHP callback
            'datetime' => function($model) {
               return date("d:m:Y H:i:s");
            }
         ];
      }
      /**
      * @inheritdoc
      */
      public static function tableName() {
         return 'user';
      }
      /**
      * @inheritdoc
      */
      public function rules() {
         return [
            [['name', 'email'], 'string', 'max' => 255]
         ];
      }
      /**
      * @inheritdoc
      */
      public function attributeLabels() {
         return [
            'id' => 'ID',
            'name' => 'Name',
            'email' => 'Email',
         ];
      }
   }
?>

 

علاوه بر فیلدهای پیش فرض: id و name، ما یک فیلد سفارشی به نام datetime اضافه کرده ایم.

مرحله 2 - در Postman آدرس  http://localhost:8080/users را اجرا کنید.

مرحله 3 - حالا مدل MyUser را اینگونه تغییر دهید.

<?php
   namespace app\models;
   use app\components\UppercaseBehavior;
   use Yii;
   /**
   * This is the model class for table "user".
   *
   * @property integer $id
   * @property string $name
   * @property string $email
   */
   class MyUser extends \yii\db\ActiveRecord {
      public function fields() {
         return [
            'id',
            'name',
         ];
      }
      public function extraFields() {
         return ['email'];
      }
      /**
      * @inheritdoc
      */
      public static function tableName() {
         return 'user';
      }
      /**
      * @inheritdoc
      */
      public function rules() { 
         return [
            [['name', 'email'], 'string', 'max' => 255]
         ];
      }
      /**
      * @inheritdoc
      */
      public function attributeLabels() { 
         return [
            'id' => 'ID',
            'name' => 'Name',
            'email' => 'Email',
         ];
      }
   } 
?>

 

توجه داشته باشید که فیلد email با متد extraFields()  برگردانده می شود.

مرحله 4 - برای دریافت اطلاعات با این فیلد email، آدرس http://localhost:8080/users?expand=email را در مرورگر وب تان باز کنید.

شخصی سازی Actionها

کلاس yii\rest\ActiveController  اکشن های زیر را مهیا می کند:

 

Index  - منابع را صفحه به صفحه لیست می کند.

 

View  - جزئیات مربوط به یک منبع مشخص را نشان می دهد.

 

Create  - یک منبع جدید ایجاد می کند.

 

Update - منابع موجود را به روز رسانی می کند.

 

Delete - منبع مشخص شده ای را حذف می کند.

 

Options - متد های HTTP پشتیبانی شده را باز می گرداند.

 

برای غیر فعال کردن action های “delete” و “create” ، کنترلر UserController را به شکل زیر تغییر دهید.

<?php
   namespace app\controllers;
   use yii\rest\ActiveController;
   class UserController extends ActiveController {
      public $modelClass = 'app\models\MyUser';
      public function actions() {
         $actions = parent::actions();
         // disable the "delete" and "create" actions
         unset($actions['delete'], $actions['create']);
         return $actions;
      }
   }
?>

 

مدیریت خطاها (Handling Errors)

هنگام دریافت یک درخواست RESTful API، اگر error ی در درخواست وجود داشته باشد یا چیزی غیرمنتظره بر روی سرور اتفاق بیفتد، شما می توانید به سادگی یک exception یا استثنا را پرتاب یا اصطلاحاً throw می کنید. اگر می خواهید علت خطا را شناسایی کنید، باید یک استثنا همراه با یک کد وضعیتِ HTTP مناسب پرتاب کنید. Yii REST از وضعیت های (status) زیر استفاده می کند :

200 - ok

 

201 - یک منبع در پاسخ به یک درخواست POST با موفقیت ایجاد شد. header حاوی URLی هست که اشاره به منبع تازه ایجاد شده می کند

 

204 - request با موفقیت انجام شد ولی پاسخ شامل هیچ محتوایی نیست

 

304 - منبع اصلاح نشده است

 

400 - request بد

 

401 – احراز هویت یا Authentication ناموفق بوده است

 

403 - کاربر تأیید شده مجاز به دسترسی به API endpoint نیست

 

404 - منابع وجود ندارند

 

405 - اجازه استفاده از متد وجود ندارد

 

415 - media type استفاده شده، پشتیبانی نشده است

 

422 - اعتبار سنجی (validation) داده موفقیت آمیز نبوده است

 

429 - request های بیش از حد

 

500 - خطای سرور داخلی

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

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

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

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

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

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

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

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

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