رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تفاوت های کیک 2 و 3 و ویژگی های نسخه جدید
#2
سلام
کمی هم در مورد router صحبت کنیم
مسیر تنظیم route ها از app/Config/routes.php به config/routes.php تغییر کرده
به جای Router::connect از از شی استفاده میشود
کد پی‌اچ‌پی:
$routes->connect('/pages/*', ['controller' => 'Pages''action' => 'display']); 

برای تعریف prefix دیگر نیازی به
کد پی‌اچ‌پی:
Configure::write('Routing.prefixes', array('admin''manager')); 
نیست
نیازی به true کردن آن هم نیست مثل
کد پی‌اچ‌پی:
Router::connect(

   '/admin',
   array('controller' => 'pages''action' => 'index''admin' => true)
); 

این کار به صورت خیلی ساده صورت میگیرد
کد پی‌اچ‌پی:
Router::prefix('admin', function ($routes) {

 $routes->connect('/pages/*', ['controller' => 'Pages''action' => 'display']);
$routes->fallbacks(DashedRoute::class);
}); 
یا اگر connect ای نیاز نداشتید
کد پی‌اچ‌پی:
Router::prefix('admin', function ($routes) {


$routes->fallbacks(DashedRoute::class);
}); 

در ساختار کنترل ها هم تغییری برای این منظور صورت گرفته که مشکلات گذشته را حل میکند
در نسخه 2 اگر میخواستید پیشوندی تعریف کنید باید در یک کنترل این کار را میکردید
به عنوان مثال اگر میخواستید به این آدرس (/admin/users/edit/5) دسترسی داشته باشید مجبور بودید در
کنترل users علاوه بر اکشن های کاربر اکشن دیگری به نام admin_edit داشته باشد که خود این باعث به هم ریختگی و سردرگمی میشد و اکشن های کاربر و مدیر در یک جا قرار میگرفت

اما در نسخه 3 کنترل مدیر (پیشوند) و بقیه جدا شده
کافیست برای این منظور پوشه ای به نام Admin کنترل درست کنید و تمام کنترل های admin را در این پوشه قرار بدید
نام اکشن هم دیگر admin_edit  نیست و فقط edit

همچنین پوشه ی قالب برای پیشوند هم از قالب های اصلی جدا شده
و تمام قالب های admin در پوشه Admin قرار میگیرد
کد پی‌اچ‌پی:
Admin|

    |->Users
           
|->index.ctp
           
|->edit.ctp  
Users 

     |->index.ctp
     
|->edit.ctp 


میتوانید route ها را گروه بندی کنید
کد پی‌اچ‌پی:
Router::scope('/api', ['controller' => 'Pages'],function (RouteBuilder $routes) {


   $routes->connect('/', [ 'action' => 'display''home']);

   $routes->connect('/pages/*', [ 'action' => 'display']); 

در این مثال ما مقدار کنترل ها برای هر دو connect تعیین کردیم مقدار api را هم به اول آدرس ها اضافه کردیم

روتر های Named دیگر استفاده نمیشود و deprecate شده است
کد پی‌اچ‌پی:
/posts/view/title:first 
دیگر استفاده نمیشود


برای به دست آوردن مقادیر (پارامتر ) ها به جای
کد پی‌اچ‌پی:
$this->request->params 
از
کد پی‌اچ‌پی:
$this->request->getParam() 
استفاده میشود

امکان اضافه کردن Middleware به cake 3 و همین طور به قسمت روتر وجود دارد

متد های زیر در کیک 3 اضافه شده است
  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • OPTIONS
  • HEAD
بنابراین به جای تعریف

کد پی‌اچ‌پی:
Router::connect(

   "/update/:id",
   array('controller' => 'Pages',"action" => "update""[method]" => "PUT"),
   array("id" => "[0-9]+")
); 
در نسخه 2 این بار میتوانید به شکل زیر در نسخه 3 تعریف کنید
کد پی‌اچ‌پی:
$routes->put(

   "/update/:id",
   ['controller' => 'Pages',"action" => "update"],
   ['id' => '[0-9]+','pass' => ['id']]
); 

فکر میکنم توضیحات در مورد روتر کافی باشه
پاسخ
سپاس شده توسط payamsp ، gha3m


پیام‌های این موضوع
RE: تفاوت های کیک 2 و 3 و ویژگی های نسخه جدید - saeid - 2017/09/06, 12:51 PM

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان