Кто как выполнил модификацию проверки на несуществующую новость?
В 8 уроке автор поставил задачу самостоятельно поискать замену строк
if(empty($data['news_item'])) {
show_404();
чтобы корректно работал код и при обновлении новости и при запросе на несуществующую новость. Автор упомянул о redirect. Я долго разбирался с redirect в курсе PHP, но в этом случае совсем иной алгоритм. Кто-то реализовал у себя эту задачу в коде?
Я пытался такое вот реализовать, но ничего не получилось
if(!empty($data['news_item'])) {
$data['news_item'] = $this->news_model->getNews($slug);
не пойму, что здесь указать, если вообще этот вариант подходит
} else {
show_404();
}
На форумах мне предложили такие вот варианта, но не могу это применить...
xxx@xx MINGW32 ~
$ cat <<\z | /c/x/php/php
<?php
$arr['test'] = NULL;
var_dump(isset($arr['test']));
z
bool(false)
xxx@xx MINGW32 ~
$ cat <<\z | /c/x/php/php
<?php
$arr['test'] = ''; # или [] пустой массив
var_dump(isset($arr['test']));
z
bool(true)
if($data['news_item'] !== null)
try{
$data['news_item'] = $this->news_model->getNews($slug);
}
catch(...){}
Спасибо.
9 ответов
Вот что на форуме посоветовали усвоить относительно записи проверок в БД!
эта проверка должна была отработать
if(!empty($data['news_item'])) {
$query = $this->db->get_where('news', array('slug'=>$slug));
return $query->row_array();
} else {
show_404();
но в браузере пусто, Ctrl-U пусто, логов нет. Завтра буду пробовать редирект применить.
о проверках, я имел ввиду спесиалчарс
student_-VH8UeUB, спасибо за совет. Но этот код у меня не работает.
Сейчас буду xdebug настраивать с целью получить более полную картину работы кода.
A PHP Error was encountered
Severity: Notice
Message: Undefined property: News::$News_model
Filename: controllers/News.php
Line Number: 76
Backtrace:
File: C:\xampp\htdocs\kinomonster\application\controllers\News.php
Line: 76
Function: _error_handler
File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\kinomonster\application\config\autoload.php:1)
Filename: core/Common.php
Line Number: 570
Backtrace:
An uncaught Exception was encountered
Type: Error
Message: Call to a member function getNews() on null
Filename: C:\xampp\htdocs\kinomonster\application\controllers\News.php
Line Number: 76
Backtrace:
File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once
student_-VH8UeUB, спасибо за помощь.
исходный код я смотрел, там строка не измененная (то на чем остановились в 8 уроке) и была поставлена задача его изменить.
Весь код не пробовал записать с базой - там много непонятных переменных. Вот пройду до конца курс - возьму конечный исходный код и буду смотреть.
Вот уже второй день, по рекомендациям на форумах - xdebug для отладки пытаюсь установить. Не работает как следует, вернее, не получилось его запустить. Позже как то попытаюсь с ним разобраться.
У меня так:
http://kinomonster.com/news/edit/news-123
news-123 нет в базе. В контроллере News в методе edit написано:
------
$this->data['news_item'] = $this->News_model->getNews($slug);
-----
if (empty($this->data['news_item'])) {
show_404();
}
-----
Получается, что если в $this->data['news_item'] ничего нет, тогда вызывается метод codeigniter фреймворка show_404() и показывается 404 ошибка, что страница несуществует.
student_-VH8UeUB, спасибо за совет. Но этот код у меня не работает.
Какую ошибку пишет? Исходник из последнего урока пробовали скачать вместе с базой и запустить?
Проверка на существование в бд записи о конкретной новости и insert - это разные вещи. Суть проверки на существовании новости или вообще чего угодно в бд в похожей ситуации - это посмотреть является ли массив пустым после запроса или нет. Если из бд возвращается пустой массив, значит в бд нет такой новости.