рдореИрдВрдиреЗ рдХреЛрдбрд┐рдЧреНрдиреЗрдЯрд░ рдкрд░ рдмрд╣реБрднрд╛рд╖реАрд╡рд╛рдж рдХреИрд╕реЗ рдХрд┐рдпрд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд╣реЗрдмрд░рд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕реНрдХрд╛рдЗрдк рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдмрд╣реБрднрд╛рд╖реАрд╡рд╛рдж рдХрд╛ "рдореЙрдбреНрдпреВрд▓" рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХреЗред
рдЫрд╡рд┐
рдпрд╣ рдкреЛрд╕реНрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдордп рдореИрдВ рдХреЛрдбрд┐рдирдЧрд░ 3 рдХреЗ рд▓рд┐рдП рдмрд╣реБрднрд╛рд╖рд╛рд╡рд╛рдж рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рд╣реИред

рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдордп рдХреЗ рд╕рд╛рде рдФрд░ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рд╕реЗ, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рд╣реВрдВ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдмрд╣реБрднрд╛рд╖рд╛рд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдмрд╣реБрднрд╛рд╖рд╛рд╡рд╛рдж рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд


рдмрд╣реБрднрд╛рд╖рд╛рд╡рд╛рдж рдХрд╛ рддрд░реНрдХ рджрд░реНрджрднрд░рд╛ рд╕рд░рд▓ рд╣реИред рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП MY_Router.php рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╕рд╛рдЗрдЯ рдХреА рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж, CodeIgniter 3 рдирдП рд░реВрдЯ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ :)

рдпрд╣ рдерд╛
$route['default_controller'] = "pages/index"; $route['pages/(.+)'] = 'pages/index/$1'; $route['news/(.+)'] = 'news/view/$1'; 


рдмрди рдЬрд╛рдПрдЧрд╛
 $route['default_controller'] = "pages/index"; $route['(by|ru|kz|en)/pages/(.+)'] = 'pages/index/$2'; $route['(by|ru|kz|en)/news/(.+)'] = 'news/view/$2'; 


рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕рд╛рдЗрдЯ рдХреА рдЙрдкрд▓рдмреНрдз рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / localize_config.php рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред

 <?php defined('BASEPATH') OR exit('No direct script access allowed'); /** *   . * * default_key =>     * list =>    * * @author Sergey Makhlenko * @version 1.0 */ $config['ROUTE_LOCALIZE'] = array( 'default_key' => 1, //  -,     "list" (0 -> by, 1 -> ru, .... 4 -> en) 'list' => array('by', 'ru', 'kz', 'ua', 'en'), //     ); 


рд╣рдо рдорд╛рдирдХ рдкреНрд░рдгрд╛рд▓реА / рдХреЛрд░ / Router.php рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред

CI_Router (MX_Router) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░

рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЛрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ MY_Router.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ ред рдпрджрд┐ рдЖрдк HMVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ Router.php рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
MY_Router.php рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝реЗрдВ

 <?php (defined('BASEPATH')) OR exit('No direct script access allowed'); // load the MX_Router class if ( file_exists(APPPATH."third_party/MX/Router.php") ) { require APPPATH."third_party/MX/Router.php"; } .... 


2) рдЙрд╕рдХреЗ рдмрд╛рдж, CI_Router рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВ рдпрд╛ рдЕрдЧрд░ HMVC MX_Router рдХреЗ рд╕рд╛рде
 class MY_Router extends CI_Router { /** * Language user or default language *     - */ public $user_lang = ''; /** * Class constructor * * Run the route mapping function. * * @param array $routing * @return void */ public function __construct($routing = NULL) { parent::__construct(); } ... } 


3) рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдкред рд╣рдореЗрдВ рдорд╛рдирдХ рдлрд╝рдВрдХреНрд╢рди CI_Router -> _set_rout рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реАрдЖрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭ рд▓реЗрдВ рддрд╛рдХрд┐ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рдЖрдкрдХреА MY_Rout рдлрд╝рд╛рдЗрд▓ рдЕрджреНрдпрддрд┐рдд рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ 1 рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо / рдХреЛрд░ / Router.php рд╕реЗ рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдзрд┐) _set_rout рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдмрдирд╛рдП рд╡рд░реНрдЧ MY_Rout рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред
рд╣рдо рдЙрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЦреЛрдЬрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рдж рдлрд╝рдВрдХреНрд╢рди рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рд░реНрдЧреЛрдВ редphp

 ..... if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/routes.php')) { include(APPPATH.'config/'.ENVIRONMENT.'/routes.php'); } // Validate & get reserved routes if (isset($route) && is_array($route)) { //     ... ..... 


рдФрд░ рдкреНрд░рд╛рдкреНрдд рд░рд╛рдЙрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд▓рд╛рдЗрди рдХреЛрдб рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

 // Update Routing Localize $this->__localize_init($route); 


4) рдФрд░ рдпрд╣рд╛рдБ рдлрд╝рдВрдХреНрд╢рди рд╣реА рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдЧрд╛ред

 /** * Append to routing localize lang * * @param array $route Route is config/routes.php * @return array */ private function __localize_init( &$route = array() ) { // Loader config localize if (file_exists(APPPATH.'config/localize_config.php')) { include(APPPATH.'config/localize_config.php'); $localize = $config['ROUTE_LOCALIZE']; } else { return FALSE; } /* --------------------------------------------------------- */ // Check config localize if ( !isset($localize) or !isset($localize['list']) ) { return FALSE; } if ( !isset($localize['default_key']) ) { $localize['default_key'] = 0; } $localize['default_key'] = intval($localize['default_key']); /* --------------------------------------------------------- */ // Language join list $lang_list = implode('|', $localize['list']); // Create new route list foreach ( $route as $key => $item ) { $_route[$key] = $item; if ( $key == 'default_controller' ) { $_route['('.$lang_list.')'] = $route['default_controller']; $_route['('.$lang_list.')/(.+)'] = '$2'; } } /* --------------------------------------------------------- */ // Check default language if ( isset( $localize['list'][ $localize['default_key'] ] ) ) { $this->user_lang = $localize['list'][ $localize['default_key'] ]; } // User select language if ( array_search( $this->uri->segment(1), $localize['list'] ) !== FALSE ) { $this->user_lang = $this->uri->segment(1); } $route = $_route; } 


рд╡рд╣ рд╕рдм рд╣реИ!


рдЕрдм рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рд▓рд┐рдВрдХ vashsite.com/by , vashsite.com/en рдпрд╛ vashsite.com (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рд╕рдордЭ рдЬрд╛рдПрдЧреАред

рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдпрд╛ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрдпрдирд┐рдд рднрд╛рд╖рд╛ (рджреНрд╡рд╛рд░рд╛, рдЖрд░рдпреВ, ..... kz) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИред
 $this->router->user_lang; 


рдлрд┐рд░ рдпрд╣ рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ user_lang рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ :) рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред

Bitbucket.org рдкрд░ рддреИрдпрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг

Source: https://habr.com/ru/post/In199268/


All Articles