#2 Практическое задание №2 -- Добавляем ещё одно поле в модель статьи
Primary tabs
Что надо сделать
- Добавить возможность в админке скрывать временно некоторые статьи сайта -- т.е. в админке показываются все статьи, а на главной только активные.
- В админке в списке статей указать какая статья активна, а какая нет.
Это же задание на видео: https://youtu.be/esOk5t_wYMk
Возможные шаги
Делать задачу можно в таком порядке:
- Добавить поле/колонку active в таблицу статей и в модель Article -- с возможным значение 0 или 1 (по умолчанию 1 -- т.е. активна) -- т.е. подготовить SQL, который модифицирует таблицу
- На форму редактирования добавляем checkbox -- галочка стоит если статья сохранятся как отображаемая (см. подробности про передачу значения по умолчанию из checkbox)
- Правим процесс выборки данных в модели Article (подробности на видео)
- Изменяем работу вью главной страницы -- показываем только активные статьи
- В админке показываем все статьи (в списке), но в дополнительной колонке (правьте view) указываем активна ли статья.
Подсказки
(смотрите только после самостоятельной попытки решить!)
- Использование значения по-умолчанию для функции выборки статей -- см. https://youtu.be/CjR7ErmMVuc и продолжение подсказки https://youtu.be/Uug_dn85qbM
Как проверять -- перед отправкой решения
Прежде чем присылать код на проверку, убедитесь что статьи скрываются/показываются после сохранения их в админке:
вы должны скрыть статью, посмотреть скрылась ли она с главной, а потом снова сделать её активной в админке -- она должна появиться.
Остальные уроки: http://fkn.ktu10.com/?q=node/9428
- Log in to post comments
- 34154 reads
sid
Thu, 02/01/2018 - 19:10
Permalink
Вопрос
Как вносить дополнительную колонку active в нашу cms, с помощью терминала или как то, по другому?
vedro-compota
Thu, 02/01/2018 - 21:12
Permalink
да с помощью терминала, но
да с помощью терминала, но код который вы использовали пришлите вместе со ссылкой на решение -- например его можно добавить в какой-то файл (.sql) в репозиторий.
_____________
матфак вгу и остальная классика =)
JinJim
Fri, 02/02/2018 - 12:28
Permalink
Решение для проверки
https://github.com/kdn2517/my-first-cms-...
vedro-compota
Fri, 02/02/2018 - 13:14
Permalink
замечания/вопросы
-- во-первых всегда пишите COMMENT чтобы потом было понятно что это за поле.
2) Также указывайте значение по умолчанию DEFAULT
-- в этом случае это важно, в т.ч. и потому, что все старые статьи надо было сделать либо активными либо неактивными.
По php:
вижу что реализован CRUD -- теперь статья обновляется
и выводится по новому в админке (судя по коду есть правка в таблице).
Но дайте ссылку на строку, где вы модифицируете выборку на главной,
чтобы не показывать там "неактивные" статьи.
_____________
матфак вгу и остальная классика =)
sid
Fri, 02/02/2018 - 13:32
Permalink
создав колонку таким образом
создав колонку таким образом это будет ошибка?
vedro-compota
Fri, 02/02/2018 - 13:40
Permalink
не ошибка, но
Также подсвечивайте синтаксис SQL-запросов (относится к оформлению).
_____________
матфак вгу и остальная классика =)
sid
Sun, 02/04/2018 - 20:51
Permalink
исправил
vedro-compota
Sun, 02/04/2018 - 22:09
Permalink
понятнее было бы наоборот
-- лучше наоборот. ведь 0 это типа false, т.е. если active = 0, то логично что она "неактивна" = "запрет на вывод для пользователей"
_____________
матфак вгу и остальная классика =)
JinJim
Fri, 02/02/2018 - 13:42
Permalink
я реализовал это так
В Article.php строки 166-172.
Если присутствует параметр categoryId, то в запрос добавляется WHERE с указанием категории, которой нужно вывести.
Если этого параметра нет - происходит поиск по регулярному выражению в имени скрипа и, если в нем содержится admin.php, то добавляется пустая строка, то есть условие не добавляется, выводятся все статьи.
В противном случае - добавляется условие "active = 1", то есть когда выводятся статьи без категории и не админом, то выводятся только активные статьи.
Остановился на этом варианте, но я понимаю, что:
Можно по разному проверять на админа - например проверкой авторизованного пользователя в сессии;
Можно при просмотре статей определенной категории выводить только активные статьи (так даже правильнее, наверно, будет; могу поправить - просто к одному условию добавить еще одно: " AND active = 1" ).
Надеюсь смог донести свою мысль)
sid
Fri, 02/02/2018 - 14:57
Permalink
class article
есть класс article в него была добавленна bool переменная со значением по умолчанию
как с помощью флага можно править функцию getList();
чтобы она проверяла поле active на true/false и в случае елси она равна true
то эта сатья попадает в список отображаемых, иначе она не должна
выводится.
конструктор данного класса:
и сама функция getList():
vedro-compota
Sat, 02/03/2018 - 18:08
Permalink
подсказка -- ещё один параметр по умолчанию.
По поводу getList -- см https://youtu.be/CjR7ErmMVuc и продолжение подсказки https://youtu.be/Uug_dn85qbM
_____________
матфак вгу и остальная классика =)
JinJim
Sat, 02/03/2018 - 21:39
Permalink
значение по умолчанию
Спасибо за подробный разбор!
Вопрос такой:
Абсолютно согласен, что необходим четвертый параметр. Как то так:
в этом случае нам придется передавать все 4 параметра при каждом вызове функции в index.php - и в функции homepage и в функции archive. Может имеет смысл сделать этот параметр первым - тогда и передавать нужно меньше параметров (как вариант - вторым или третьим - ведь $order вообще нигде не передается).
vedro-compota
Sun, 02/04/2018 - 15:34
Permalink
порядок параметров
собственно ваше предложение вполне допустимо (на вкус автора), но помните вот что: сохраняя старый порядок вы гарантируете, что вам не ужно проверять ВЕСЬ КОД проекта на вызовы функции (то есть просто уменьшаете. трудоёмкость)
Если вы видите, что удобнее другой порядок и поправить код всего проекта (! -- а значит это только автопоиск по имени функции/метода) не сложно -- можно использовать ещё и другой.
Но вот совет -- а может лучше вообще написать метод-обёртку того же класса (на getList) как раз таки с другим порядок (предлагаемым вами) параметров - -тогда и старый код править не надо будет и новая функция будет удобна для вызовов, а внутри себя она будет использовать расширенную getList()
То есть где нужно работать с active там вы будете вызывать обёртку, а старый код, который править не нужно будет по-прежнему работать с getList()
Но в целом это всё на ваше усмотрение.
_____________
матфак вгу и остальная классика =)
sid
Mon, 02/05/2018 - 23:15
Permalink
Прошу проверить здесь
Прошу проверить здесь
JinJim
Mon, 02/05/2018 - 10:29
Permalink
Исправления ошибок
https://github.com/kdn2517/my-first-cms-...
sid
Wed, 02/07/2018 - 13:57
Permalink
По практическому заданию 2
Checkbox
dimmkan
Thu, 10/24/2019 - 21:21
Permalink
Практическое задание №2
Ссылка на коммит:
Ссылка
Firons
Fri, 10/02/2020 - 19:48
Permalink
Практическое задание №2
Commit
NewDeveloper
Mon, 01/17/2022 - 14:48
Permalink
Практическое задание №2
Изменение 2
Dennis80
Sun, 04/23/2023 - 10:28
Permalink
Практическое задание №2
Задание 2
Dennis80
Sun, 07/09/2023 - 14:11
Permalink
Ошибка sql
Ошибка на сайте firstCMS