Поведение CodeIgniter, конструкторы и маршруты

0

Я впервые использую CodeIgniter 2.0 для создания многоязычного сайта, на котором главная страница содержит слайд-шоу. Я разрабатываю его на своем ноутбуке - localhost/website/.

Я использую файл route.php, чтобы указать, какую языковая функция вызывать для установки переменных в зависимости от URL- http://localhost/website/language/page_id/some-page-title с форматом http://localhost/website/language/page_id/some-page-title. Таким образом, http://localhost/website/en/1/Home-Page дает английскую страницу page_id 1.

Таким образом, файл маршрутов имеет:

$route['default_controller'] = "content";
$route['en/(:num)/(:any)'] = "content/en/$1";
$route['de/(:num)/(:any)'] = "content/de/$1";
$route['es/(:num)/(:any)'] = "content/es/$1";
etc

Пример функции языка (функция en) в контроллере контента:

public function en ($page_id) {
        $language="en";
        $lang_array['css']="base.css";
        $this->get_content($page_id, $lang_array);
}

Функция get_content выполняет все.

Однако функция индекса контроллера содержимого выглядит следующим образом:

public function index() {
            //setting defaults for when arrive straight at home page or with no language in url
            $page_id=1;
            $lang_array['language']="en";
            $lang_array['css']="base.css";
            $this->get_content($page_id, $language);
        }

Моя проблема в том, что когда я иду на http;//localhost/website/ все работает отлично, включая слайд-шоу. Однако, когда я перехожу к URL- http://localhost/website/en/1/Home-Page все работает, за исключением того, что изображения в слайд-шоу не отображаются (хотя они оба выполняют один и тот же код, а вывод html одинаковый когда я смотрю на источник просмотра на странице).

Единственное, о чем я мог подумать, это тот факт, что если я просто поставлю http;//localhost/website/ то будет вызвана функция индекса, которая активирует конструктор, но если я поставлю http://localhost/website/en/1/Home-Page тогда индекс и, следовательно, конструктор обходят. Однако не знаю, почему поэтому другие вещи все еще работают, но слайд-шоу pic не делает. Это причина, по вашему мнению? любые решения?

благодаря

Том

Теги:
codeigniter

1 ответ

0

Я мог бы подумать, что это некоторая ошибка JavaScript для неопределенной переменной, возможно связанная с $ lang_array ['language'], которая не установлена.

В индексе вы установите для ключа по умолчанию значение "en",

public function index() {
        //setting defaults for when arrive straight at home page or with no language in url
        $page_id=1;
        $lang_array['language']="en";
        $lang_array['css']="base.css";
        $this->get_content($page_id, $language);
    }

но в методе en вы не

public function en ($page_id) {
    $language="en";
    $lang_array['css']="base.css";
    $this->get_content($page_id, $lang_array);

}

Поскольку они выглядят почти одинаково, вы должны абстрагировать идентичное поведение в частной функции или, возможно, изменить маршрут для отправки языка в качестве параметра в одну функцию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню