Welcome Guest, Not a member yet? Register   Sign In
router not working
#1

[eluser]stalkerok[/eluser]
Why does not router?

using:
Code:
$route['(ru|en)'] = $route['default_controller'];
$route['(ru|en)/(.+)'] = "$2";

not working:
Code:
$route['view/(.+)'] = 'page/view/$1';

help fix,
thanks!
#2

[eluser]metaltapimenye[/eluser]
elaborate please, too few info, cannot fix, thx
#3

[eluser]stalkerok[/eluser]
controller:
Code:
<?php

class Page extends Controller {

    function Page() {
        parent::Controller();
    }

    function index() {
        ....
        ....
    }

    function view($url_name='') {

        $language = $CI->uri->segment(1);
        $this->load->model($language);
        ....
        ....
    }

}

router:
Code:
$route['view/(.+)'] = 'page/view/$1';
$route['(ru|en)'] = $route['default_controller'];
$route['(ru|en)/(.+)'] = "$2";

URL's not working (404):
Quote:....../ru/view/test
....../en/view/test
#4

[eluser]Jeroen Brussich[/eluser]
Code:
$route['view/(.+)'] = 'page/view/$1';
// change to
$router['view/:any'] = 'page/view/$1';

// For every URI that starts with 'view' and is followed by '*', use class page, method view and pass * as parameter

Code:
$route['(ru|en)'] = $route['default_controller'];
// please paste your default_controller so we can have a look at it.

// For ever URI that's just 'ru' OR 'en', use the default-controller.
// Looks OK

Code:
$route['(ru|en)/(.+)'] = "$2";
// change to
$route['(ru|en)/:any'] = "$2"; //FAIL!!

//You don't tell CI what class/method to use for this route.
#5

[eluser]stalkerok[/eluser]
Code:
$route['(ru|en)/(.+)'] = "$2";

router needs to use multiple languages

if change to
Code:
$route['(ru|en)/:any'] = "$2";
opens only a default controller

if not change then 404
#6

[eluser]Jeroen Brussich[/eluser]
But the problem remains.
You don't tell CI what controller it has to use.

You have to write something like
Code:
$route['(ru|en)/:any'] = "/CLASS/CONTROLLER/$2";
#7

[eluser]stalkerok[/eluser]
If multiple controllers?

Code:
$route['(ru|en)/:any'] = "/CLASS1/CONTROLLER1/$2";
$route['(ru|en)/:any'] = "/CLASS1/CONTROLLER2/$2";
$route['(ru|en)/:any'] = "/CLASS2/CONTROLLER1/$2";
#8

[eluser]Jeroen Brussich[/eluser]
AAH, now I understand what you're after.
Never tried what you are aiming at, but I would write something like this.

Code:
$route['ru|en/([a-z]+)']          = "$1"     // use class->index()
$route['ru|en/([a-z]+)/([a-z]+)'] = "$1/$2"; // use class / controller
#9

[eluser]stalkerok[/eluser]
url:

Quote:page/view/test
en/page/view/test
ru/page/view/test
/view/test
Work!

but url:
Quote:en/view/test
ru/view/test
not work.
#10

[eluser]Jeroen Brussich[/eluser]
That's because the class 'view' does not exists.

The CI-uri is built as follows: /CLASS/FUNCTION/PARAM1

You rewrite your routes in order to dismiss en|ru in your uri.
In your case, the CI-uri is: en/CLASS/FUNCTION/PARAM1 or ru/CLASS/FUNCTION/PARAM1

That's why your four first examples work:
Code:
page/view/test          // load class PAGE - method VIEW with parameter test
en/page/view/test       // dismiss en, load class PAGE - method VIEW with parameter test
ru/page/view/test       // dismiss ru, load class PAGE - method VIEW with parameter test
/view/test              // matches $route['view/(.+)'] = 'page/view/$1

your other examples won't work
Code:
en/view/test            // dismiss en, load class VIEW - method TEST without parameters
ru/view/test            // dismiss ru, load class VIEW - method TEST without parameters

either link to en|ru/page/view/test or rewrite your routes to page/$1/$2




Theme © iAndrew 2016 - Forum software by © MyBB