تالار گفتمان nCIS.ir

نسخه‌ی کامل: route
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
در کدایگنایتر و احتمالا دیگر فریم ورک ها ، قسمتی داره که بشه route مشخص کرد . به این شکل که url را خوانده و به فولدر ، کنترلر و اکشن مورد نظر میرود .
$route['contact'] = 'admin/contact';
$route['contact/(:any)'] = 'admin/contact';
$route['edit-class/(:num)'] = 'admin/classlist/edit_class';

میخواستم بدونم در این پروژه ی mvc به چه شکل باید این کار رو انجام بدیم ؟
توی تمام فریمورکها چنین قابلیتی وجود داره. برای اینکار کافیه یک فایل برای مسیرها بگذارین که اونها رو به این شکل برمیگردونه (مثال) :
return array(
    'contact' => 'admin/contact',
    'contact/<name:.*> => 'admin/contact',
    'edit-class/<id:d+>' => 'admin/classlist/edit_class',
);

حالا توی router این فایل رو اینطوری میخونید:
$routes = require_once dirname(__FILE__) . '/../config/routes.php';
الان شما توی آرایه routes$ مسیرها رو دارین. کافیه با یکم تلاش و استفاده از توابعی مثل explode و preg_match و... مقادیر رو از URL استخراج کنید و کارهای لازم رو انجام بدین. این همون روشی هست که توی فریمورک Yii داره استفاده میشه و برای اطلاع از نحوه کارش میتونید کد کلاس yii/framework/web/CUrlManager.php رو بررسی کنید.