Идентификатор с косыми чертами в коде / контроллере Codeigniter

У меня есть этот маршрут в Codeingniter

$route['([en|fr|es|it]+)/(.+)'] = 'My_Controller/index/$1/$2';

где первый аргумент - это идентификатор lang, а второй - уникальный идентификатор. Идентификатор имеет косую черту в своем формате, например:

item/34/public    
something/else
name/for/this/can/be/12345

Количество слешей в идентификаторе может быть от 0 до (никто не знает), поэтому на самом деле я получаю идентификатор в My-Controller с помощью этого хака:

public function index($lang,$id)
{
    $hack_id = $this->uri->segment(3);

    if ($this->uri->segment(4)) {
         $hack_id .= "/".$this->uri->segment(4);
    }

    if ($this->uri->segment(5)) {
        $hack_id .= "/".$this->uri->segment(5);
    }

    /*...and so go on if clauses, repeating and concatenating ...*/
    /* and finally passing the hack_id data to view */
}

Это работает, но я думаю, что это странное решение (я на самом деле не передаю какой-либо идентификатор) и должно быть способом сделать это лучше, более разумным решением (может быть, в маршрутах?).

Любая помощь или подсказка приветствуются...

0 ответов

Другие вопросы по тегам