سلام به همه دوستان
شاید خیلی از ما توی پروژه های کیکمون برای ایجاد صفحات مجازی راه حل
هایی ایجاد و پیاده سازی کرده باشیم
با فرض اینکه کنترلری به نام pages و متد view رو داشته باشیم ساده ترین
حالت اینه که بنویسیم :
کد PHP:
class PagesController extends AppController {
var $name = 'Pages';
function view($basename=null){
/* Continue ... */
}
}
توی این حالت آدرس صفحات ما به صورت زیر هستش :
pages/view/PageBasename/
که PageBasename شناسه صفحه ی مورد نظر ما ست که باید بر اساس
مقدارش برای نشان دادن اطلاعات تصمیم گیری کنیم.
پس اگر صفحه ای بنام about داشته باشیم آدرس صفحه ی ما به صورت زیر
میباشد :
pages/view/about/
به نظر شما جالب تر نیست اگر این صفحه رو به صورت زیر فراخوانی کنیم ؟؟
about.html/
خب من راه حل زیر رو پیدا کردم
توی config/routes.php/ کد زیر رو نوشتم :
کد PHP:
Router::connect(
'/:basename',
array(
'controller'=>'pages',
'action'=>'view'
),
array(
'basename' => '([^\/]*)\.html'
)
);
و کنترلر pages رو به صورت زیر بازنویسی کردم :
کد PHP:
class PagesController extends AppController {
var $name = 'Pages';
function view($basename=null){
if( isset($this->params['basename']) ){
$basename = $this->params['basename'];
}
if( preg_match("/^(.*?)\.html$/",$basename,$arr)){
$basename = $arr[1];
}else{
$this->flashFail( 'صفحه وجود ندارد', '/');
}
/* Continue ... */
}
}
با افزودن این کد ها آدرس صفحه ی about به صورت زیر تغییر پیدا کرد :
about.html/
و از این به بعد فرمت کلی آدرس دهی صفحات مجازی ما به صورت زیر خواهد بود :
PageBasename.html/
موفق باشید