После того, что я думал, это проблема с $ this-> uri-> segment () , я понял, что это на самом деле проблема маршрутизации. Проблема в том, что я не могу понять, что не так, поскольку он выглядит точно так же, как другой маршрут, который я использую, который отлично работает, за исключением того, что у него есть два сегмента переменных, а не один (для маршрута, который работает).
Файл, который я пытаюсь показать, находится в:
[главная папка] /application/views/tasks/calendar/calendar.php
И я могу загрузить его командой:
$route['tasks/calendar'] = 'tasks/calendar';
Однако, когда я хочу передать текущий год и месяц в качестве последних двух сегментов, он не работает:
$route['tasks/calendar/(:num)/(:num)'] = 'tasks/calendar/$1/$2';
Насколько мне известно, это должно означать, что такая ссылка должна работать:
(…) / index.php / задачи / календарь / 2015/03
Однако это не так. Полный route.php выглядит так:
$route['auth/(:any)'] = 'auth/view/$1'; $route['auth'] = 'auth'; $route['projects/delete/(:any)'] = 'projects/delete/$1'; $route['projects/create'] = 'projects/create'; $route['projects/(:any)'] = 'projects/view/$1'; $route['projects'] = 'projects'; $route['(:any)'] = 'pages/view/$1'; $route['default_controller'] = 'pages/view'; $route['category'] = 'category'; $route['category/(:any)'] = 'category/view/$1'; $route['tasks/create'] = 'tasks/create'; $route['tasks/calendar/(:num)/(:num)'] = 'tasks/calendar/$1/$2'; $route['tasks/calendar'] = 'tasks/calendar'; $route['tasks'] = 'tasks'; $route['tasks/(:any)'] = 'tasks/view/$1';
И мой контроллер, tasks.php , выглядит так:
public function calendar($year = null, $month = null) { // Calender configuration (must be done prior to loading the library $conf = array( 'start_day' => 'monday', 'show_next_prev' => true, 'next_prev_url' => base_url() . 'index.php/tasks/calendar' ); // Load libraries and helpers $this->load->library('calendar',$conf); // Set variables for $data array $data['year'] = $year; $data['month'] = $month; // Show page, including header and footer $this->load->view('templates/header', $data); $this->load->view('tasks/calendar', $data); $this->load->view('templates/footer'); }
И очень простой файл вида calendar.php выглядит следующим образом:
<?php echo "Selected year: ".$year." and month: ".$month; echo $this->calendar->generate($year, $month);
Какого черта я делаю неправильно? Удаленные маршруты для проектов работают отлично …