Я впервые использую 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 не делает. Это причина, по вашему мнению? любые решения?
благодаря
Том
Я мог бы подумать, что это некоторая ошибка 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);
}
Поскольку они выглядят почти одинаково, вы должны абстрагировать идентичное поведение в частной функции или, возможно, изменить маршрут для отправки языка в качестве параметра в одну функцию.