404 ошибка codeigniter, почему ci не видит маршрута?

0
0

Добрый день!
Я сделал, согласно заданию 24 курса по codeigniter, метод в контроллере Movies - addmovie для добавления фильма или сериала (на певом этапе просто добавление фильма, без параметра функций сериала или фильма), но дело в том, что маршрутизатор не видит пути до метода и выдает 404, хотя вроде как правильно все сделал.

Код routes.php:

$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['movies/(:any)'] = 'movies/view/$1';
$route['movies/addmovie'] = 'movies/addmovie'; //Добавить фильм
$route['movies/type/films'] = 'movies/type/films/$1';
$route['movies/type/serials'] = 'movies/type/serials/$1';
$route['movies/editmovie'] = 'movies/editmovie/$1'; //Изменить фильм
$route['movies/deletemovie'] = 'movies/deletemovie'; //Удалить фильм

$route['rating'] = 'movies/rating';

$route['news'] = 'news';
$route['news/create'] = 'news/create';
$route['news/success-add'] = 'news/success-add';
$route['news/edit'] = 'news/edit';
$route['news/delete'] = 'news/delete';
$route['news/(:any)'] = 'news/view/$1';

Код метода добавления контроллера Movies.php:

	public function addmovie() {


		if(!$this->dx_auth->is_admin()) {
			$this->load->helper('url_helper');
			redirect('/', 'location');
		}

		$this->data['title'] = 'Добавить фильм';

		if ($this->input->post('slug')
			&& $this->input->post('name') 
			&& $this->input->post('description')
			&& $this->input->post('rating')
			&& $this->input->post('director')
			&& $this->input->post('poster')
			&& $this->input->post('player_code')
			&& $this->input->post('categody_id')) {

			$slug = $this->input->post('slug');
			$name = $this->input->post('name');
			$description = $this->input->post('description');
			$rating = $this->input->post('rating');
			$director = $this->input->post('director');
			$poster = $this->input->post('poster');
			$player_code = $this->input->post('player_code');
			$categody_id = $this->input->post('categody_id');

			if ($this->films_model->setfilms($slug, $name, $description, $rating, $director, $poster, $player_code, $categody_id)) {
				$this->load->view('templates/header', $this->data);
				$this->load->view('movies/success-add', $this->data);
				$this->load->view('templates/footer');
			}
		} else {
			$this->load->view('templates/header', $this->data);
			$this->load->view('movies/create', $this->data);
			$this->load->view('templates/footer');
		}

		$this->load->view('templates/header', $this->data);
		$this->load->view('movies/create', $this->data);
		$this->load->view('templates/footer');

	}

Код метода добавления фильма модели Films_model.php:

	public function setfilms($slug, $name, $description, $rating, $director, $poster, $player_code, $categody_id) {

		$data = array (
			'slug' => $slug,
			'name' => $name,
			'description' => $description,
			'rating' => $rating,
			'director' => $director,
			'poster' => $poster,
			'player_code' => $player_code,
			'add_date' => NOW(),
			'categody_id' => $categody_id
		);

		return $this->db->insert('movie', $data);

	}

Код файла вида добавления фильма addmovie.php:

<h4><?php echo $title; ?></h4>
<form action="/movies/create/" method="POST">
	<input type="input" name="slug" placeholder="slug"><br>
	<input type="input" name="name" placeholder="Название фильма"><br>
	<textarea name="description" placeholder="Описание фильма"></textarea><br>
	<input type="input" name="year" placeholder="Год выпуска фильма"><br>
	<input type="input" name="rating" placeholder="Рейтинг"><br>
	<input type="input" name="director" placeholder="Продюсер"><br>
	<input type="input" name="poster" placeholder="Ссылка на постер"><br>
	<input type="input" name="player_code" placeholder="Ссылка на трейлер"><br>
	<select name="categody_id">
		<option disabled>Выберите категорию фильма</option>
		<option value="1">Фильм</option>
		<option value="2">Сериал</option>
	</select>
	<input type="submit" name="submit" value="Добавить фильм">
</form>

Учитывая что если поставить метод в контроллере index(), то бишь как дефолтный метод, и загрузить в него код из addmovie (код добавления фильма) все работает отлично и фильм добавляется, и вид показывается, и роутинг работает, а если указать как другой метод create или addmovie (без разницы), то CI упорно не видит ни файла вида ни контроллера.

В чем может быть проблема, 3 дня голову ломаю?


student_H4lhrgLb

2 years ago

Похожие вопросы

Один ответ





У меня еще movies есть в роутинге:

$route['movies'] = 'movies';

И any идет ниже movies, а не первым. Помню, что это вызывало у меня 404 ошибку.

student_Y7yoWdC7

2 years ago

Ваш ответ