Создание сайта для учета книг в библиотеке

Аватар пользователя batulin batulin 30 декабря 2021 в 16:31

Друзья! Всем здравствуйте! Всех с Рождеством и наступающим Новым годом!
Передо мной задача - сделать сайт для учета книг в в библиотеке. Начал реализовывать таким образом: создал три типа материалов - книга (карточка книги), читатель и выдача. В выдаче есть 4 поля: id читателя, id книги и две даты (выдачи и возврата). При выдаче книги создается нода выдача с айдишниками читателя и книги. С помощью views сделал представления для вывода книг и читателей, причем с помощью модуля prepopulate сделал ссылки в этих представлениях для перехода на страницу с формой создания выдачи и заполненным полем читателя или книги (в зависимости от представления).
При таком подходе есть проблема - выданные книги не исчезают из списка книг в форме создания выдачи.
Это на данный момент промежуточная проблема. Дальше я хочу делать этот сайт более удобным и добавлять новые функции.
Поэтому прошу вас подсказать в каком направлении лучше двигаться. Использовать ли форму для создания материалов? (как сейчас и есть) Каким то образом создавать собственную форму для создания выдач? Или создавать выдачи через модуль? Или еще какой либо вариант. Спасибо!

Комментарии

Аватар пользователя marassa marassa 30 декабря 2021 в 17:47

batulin wrote: выданные книги не исчезают из списка книг в форме создания выдачи

В смысле при заполнении в Выдаче поля Книга в списке показываются все книги, включая находящиеся на руках? В настройках ER-поля формы можно указать, что список будет формироваться через view. Таким образом Вам нужно создать хитровыделанное представление по Книгам, которое будет выводить только книги, имеющиеся в наличии, а потом подвязать это представление к полю Книга в Выдаче.
Ну или есть ещё простой, но не очень хороший вариант: добавить в Книгу поле Available и менять его значение при каждой выдаче и возврате книги, это упростит создание представления для заполнения поля. Минус этого варианта в том, что по сути это дублирование информации, а по закону подлости из-за всяких сбоев, ручных правок и т.п.неминуемо будут возникать нестыковки, когда книга будет числится выданной, при том что она в наличии и наоборот.
А так у вас всё грамотно спроектировано, я бы ничего по-крупному не менял.

Аватар пользователя batulin batulin 30 декабря 2021 в 18:39

Андрей! Спасибо огромное! Скажите пожалуйста - "В настройках ER-поля формы" где это? я просто холодный в drupal. То, что сделано, это сделано по совету друга и по уроку. Эти настройки делаются без дополнительного модуля или с field validate? Еще раз спасибо.

Аватар пользователя marassa marassa 30 декабря 2021 в 18:50

Сам уж забыл где это - еле нашёл Wink
Это не в настройках формы, а в настройках собственно полей типа материала.
Structure-> Content types->Выдача->Manage fields->Книга:

Никаких доп. модулей - всё в ядре.

Аватар пользователя batulin batulin 31 декабря 2021 в 15:46

Спасибо большое. Не подскажите еще один момент - где можно прочитать или посмотреть как во views сделать фильтрацию именно по наличию связи. Дело в том, что мне нужна фильтрация видимо по двум параметрам: если id книги равен book_id в материале выдача, то его не нужно отображать. По моему во views раньше был оператор if. Данная возможность описывается в документации? Или нужно хорошо знать принципы работы views и лепить из этого функционала все, что мне нужно? Спасибо вам за ответы, Андрей! Еще раз с наступающим!