Serebos
Новичок
Привет! Есть рабочий метод для редактирования новости, который по ссылке, например, http://kinomonster.com/news/edit/news-2/ выводит в браузере форму с содержанием новости с БД для дальнейшего редактирования и сохранения. Если ввести в браузер адрес несуществующей новости в БД, например, http://kinomonster.com/news/edit/news-40/ тогда, в браузере выводится пустая форма без значений. Чтобы изменить последнее поведение - добавлена проверка на наличие данных в БД, которая и вызывает ошибку в работе кода (появилась ошибка 404, в т.ч. и при наличие данных. ).
Формулировка решения проблемы: ОДИН ИЗ СПОСОБОВ - ДОБАВИТЬ РЕДИРЕКТ ПОСЛЕ УСПЕШНОГО ОБНОВЛЕНИЯ НОВОСТИ.
Редирект я использую в другом коде и он работает в следующем виде:
Попытки его применить в данной ситуации оказались безуспешными.
Логически я вижу другой способ решения этой задачи, но он не работает:
Подскажите, пожалуйста, как быть в этой ситуации.
СПАСИБО.
Код:
public function edit($slug = NULL) {
$this->data['title'] = "редактировать новость";
$this->data['news_item'] = $this->news_model->getNews($slug);
if (empty($data['news_item'])) {
show_404();
}
$this->data['title_news'] = (isset($this->data['news_item']['title'])) ? $this->data['news_item']['title'] : "";
$this->data['content_news'] = (isset($this->data['news_item']['text'])) ? $this->data['news_item']['text'] : "";
$this->data['slug_news'] = (isset($this->data['news_item']['slug'])) ? $this->data['news_item']['slug'] : "";
if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {
$slug = $this->input->post('slug');
$title = $this->input->post('title');
$text = $this->input->post('text');
if($this->news_model->updateNews($slug, $title, $text)) {
echo "Новость успешно отредактирована!";
}
}
$this->load->view('templates/header', $this->data);
$this->load->view('news/edit', $this->data);
$this->load->view('templates/footer');
}
Редирект я использую в другом коде и он работает в следующем виде:
Код:
$this->load->helper('url_helper');
redirect('/', 'location');
Логически я вижу другой способ решения этой задачи, но он не работает:
Код:
public function edit($slug = NULL) {
$this->data['title'] = "редактировать новость";
$this->data['news_item'] = $this->news_model->getNews($slug);
if (empty($data['news_item'])) {
show_404();
} else {
$this->data['title_news'] = (isset($this->data['news_item']['title'])) ? $this->data['news_item']['title'] : "";
$this->data['content_news'] = (isset($this->data['news_item']['text'])) ? $this->data['news_item']['text'] : "";
$this->data['slug_news'] = (isset($this->data['news_item']['slug'])) ? $this->data['news_item']['slug'] : "";
if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {
$slug = $this->input->post('slug');
$title = $this->input->post('title');
$text = $this->input->post('text');
if($this->news_model->updateNews($slug, $title, $text)) {
echo "Новость успешно отредактирована!";
}
}
}
$this->load->view('templates/header', $this->data);
$this->load->view('news/edit', $this->data);
$this->load->view('templates/footer');
}
СПАСИБО.