زمان جاری: 2012/05/23, 01:42 AM خوش آمدید مهمان گرامی! (ورودعضویت)



راه حل برای سر راست کردن آدرس صفحات مجازی


ارسال موضوع  ارسال پاسخ 
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
راه حل برای سر راست کردن آدرس صفحات مجازی
نویسنده پیام
امیر آفلاین
تازه کار
*

ارسال‌ها: 21
تاریخ عضویت: Aug 2010
رتبه: 0
تشکر: 5
9 بار تشکر شده در 9 پست
ارسال: #1
راه حل برای سر راست کردن آدرس صفحات مجازی
سلام به همه دوستان
شاید خیلی از ما توی پروژه های کیکمون برای ایجاد صفحات مجازی راه حل
هایی ایجاد و پیاده سازی کرده باشیم
با فرض اینکه کنترلری به نام 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/

موفق باشید
(آخرین تغییر در این ارسال: 2010/11/12 01:53 PM توسط امیر.)
2010/11/12 01:44 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
870 بار تشکر شده در 560 پست
ارسال: #2
RE: راه حل برای سر راست کردن آدرس صفحات مجازی
حرکت جالبی بود. اما زیاد استاندارد نیست
درستش این هست.
کد PHP:
Router::connect(
        
'/:basename',
        array(
            
'controller'=>'pages',
            
'action'=>'view'            
        
),
        array(
            
'basename' => '[a-zA-Z0-9\-]+',
            
'ext' => 'html'
            'pass' 
=> array('basename')
        )
    ); 

اما بهترین راه استفاده از کلاس سفارشی روتر هست که آموزشش رو مارک تو وبلاگش فرار داده

نقل قول:http://mark-story.com/posts/view/using-c...in-cakephp
2010/11/12 05:15 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: