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

در پست اول این :
نقل قول: language/section/controller/action/parameter
به شک انداخت من رو مخصوصا اون کلمه section که خودم قبلا باهاش داستان داشتم.

راه درست این هست که در روتر هایی که تعریف می کنید. این تغییر رو اعمال کنید.

کد پی‌اچ‌پی:
<?php

/**
 * @author zoghal
 * @copyright 2014
 */
$langs = array('fa','en','ar');
$mainLang 'fa';
$prefixes Router::prefixes();

if (
$plugins CakePlugin::loaded()) {
    
App::uses('PluginShortRoute''Routing/Route');
    foreach (
$plugins as $key => $value) {
        
$plugins[$key] = Inflector::underscore($value);
    }
    
$pluginPattern implode('|'$plugins);
    
$langPattern implode('|'$langs);
    
$match = array(
        
'plugin' => $pluginPattern
        
'defaultRoute' => true
        
'lang' => $langPattern,
        
'persist' => array('lang')
    );
    
$shortParams = array(
        
'routeClass' => 'PluginShortRoute'
        
'plugin' => $pluginPattern
        
'defaultRoute' => true
        
'lang' => $langPattern ,
        
'persist' => array('lang')
    );

    foreach (
$prefixes as $prefix) {
        
$params = array('prefix' => $prefix$prefix => true'lang' => $mainLang);
        
$indexParams $params + array('action' => 'index');
        
Router::connect("/:lang/{$prefix}/:plugin"$indexParams$shortParams);
        
Router::connect("/:lang/{$prefix}/:plugin/:controller"$indexParams$match);
        
Router::connect("/:lang/{$prefix}/:plugin/:controller/:action/*"$params$match);
    }
    
Router::connect('/:lang/:plugin', array('action' => 'index'), $shortParams);
    
Router::connect('/:lang/:plugin/:controller', array('action' => 'index'), $match);
    
Router::connect('/:lang/:plugin/:controller/:action/*', array(), $match);
}

foreach (
$prefixes as $prefix) {
    
$params = array('prefix' => $prefix$prefix => true'lang' => $mainLang);
    
$indexParams $params + array('action' => 'index');
    
Router::connect("/:lang/{$prefix}/:controller"$indexParams, array('defaultRoute' => true));
    
Router::connect("/:lang/{$prefix}/:controller/:action/*"$params, array('defaultRoute' => true));
}
Router::connect('/:lang/:controller', array('action' => 'index'), array('defaultRoute' => true));
Router::connect('/:lang/:controller/:action/*', array(), array('defaultRoute' => true));

$namedConfig Router::namedConfig();
if (
$namedConfig['rules'] === false) {
    
Router::connectNamed(true);
}

unset(
$namedConfig$params$indexParams$prefix$prefixes$shortParams$match,
    
$pluginPattern$plugins$key$value);

?>
این کد ها رو در یک فایل به اسم magicRoutes.php در app/config قرار بدید و در همین مسیر در فایل routes.php خط آخر این تغییر رو اعمال کنید.

کد پی‌اچ‌پی:
/**
 * Load the CakePHP default routes. Only remove this if you do not want to use
 * the built-in default routes.
 */
    //require CAKE . 'Config' . DS . 'routes.php';
    
require APP 'Config' DS 'magicRoutes.php'

این روتهای دیفالت رو به پشتیبانی زبان در آدرس تعویض میکنه. البته در حالت کلی و استاندارد
دو نکته : من زبان رو ۲ حرفه وارد کردم در صورتیی که میشه ۳ حرف باشه.
'defaultRoute' => true, در کیک ۲.۶ اضافه شده. من روی ۲.۶ باید کار کنم. اما می تونید در نسخه های پاپیین تر حذفش کنید.
پاسخ
سپاس شده توسط saeid


پیام‌های این موضوع
RE: راه استاندارد برای حضور زبان جاری در آدرس - saleh - 2014/07/05, 05:45 PM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  تعویض جداساز در روت برای named ؟ wickietetsu 9 8,314 2013/10/24, 10:57 PM
آخرین ارسال: saleh
  تغییر در نحوه آدرس دهی paginator mobasher 31 27,533 2013/08/16, 09:14 PM
آخرین ارسال: saleh
  تغییر آدرس cakephp 6 6,999 2012/06/05, 01:15 AM
آخرین ارسال: saleh
  راه حل برای سر راست کردن آدرس صفحات مجازی امیر 1 3,453 2010/11/12, 05:15 PM
آخرین ارسال: saleh
  تنظیم روتر برای admin Masoud1365 3 5,542 2010/07/03, 02:24 AM
آخرین ارسال: Masoud1365
  نحوه تنظیم روتر برای شناسایی چندین پیشوند میلاد 1 4,259 2010/01/19, 01:19 AM
آخرین ارسال: saleh

پرش به انجمن:


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