Генерация навигации для разных типов пользователей, MVC, PHP
У меня есть идея создания массива пользовательских ссылок, которые будут зависеть от пользовательских ролей.
Пользователь может быть студентом или администратором.
Что я имею в виду, это использовать foreach
цикл для создания списка ссылок, который доступен только для определенных пользователей.
Моя проблема в том, что я создал вспомогательный класс с именем Navigation
, но я настолько уверен, что НЕ ДОЛЖЕН жестко кодировать ссылки там, вместо этого я хочу, чтобы этот вспомогательный класс просто прочитал объект, отправленный откуда-то, и затем вернул бы требуемый массив навигации на страницу.
Следите за вопросами, где, по вашему мнению, я должен хранить ссылки, которые будут доступны только для студентов, для администраторов. Должен ли я просто сохранить их в текстовом файле?
или если возможно создать контроллер, который передает массив ссылок, например, метод в nav_controller
класс -> studentLinks(){}
который отправит массив ссылок на вспомогательный класс, затем вспомогательный класс отправит его в представление..
Извините, если я совершенно без ума от объяснений. Есть ли у вас связанные ресурсы?
2 ответа
Из вашего описания кажется, что вы строите какую-то систему образования. Было бы целесообразно создать реализацию таким образом, чтобы впоследствии вы могли расширить проект. Кажется разумным ожидать добавления "лекторов" в роли позже.
С другой стороны... Я не уверен, насколько обширны ваши знания о шаблонах проектирования MVC.
Тем не менее, в этой ситуации я бы рассмотрел два способа решения этой проблемы:
Просмотр запрашивает статус текущего пользователя из слоя модели и, основываясь на ответе, запрашивает дополнительные данные. Затем представление использует шаблоны администратора или пользователя и создает ответ.
Вы можете либо жестко закодировать конкретные элементы навигации в шаблонах, из которых вы строите ответ, либо список доступных элементов навигации может быть частью дополнительной информации, которую вы запросили из слоя модели.
Недостатком этого метода является то, что каждый раз, когда вам нужно, когда вам нужно добавить другую группу, вам придется переписывать некоторые (если не все) классы представления.
Оберните структуры из слоя модели в объект сдерживания (основа реализации доступна в этом посте), что позволит вам ограничить возвращаемые данные.
При использовании этого подхода представления всегда запрашивают всю доступную информацию из слоя модели, но некоторые из них вернутся
null
, в этом случае шаблон не будет применяться. Для реализации этого список доступных элементов навигации должен быть представлен на уровне модели.
PS Как вы могли заметить из этого описания, представление - это не шаблон, а модель - это не класс.
Это действительно зависит от того, что вы уже используете и масштаб вашего проекта. Если вы используете БД - вставьте его туда. Если вы используете xml/json/yaml/ что угодно - сохраните его в файле соответствующего формата. Если у вас нет ни одного - жестко запишите это. Что я имею в виду - избегайте использования нескольких технологий для хранения данных. Кроме того, если ссылки не будут обновляться часто, и пользователи не смогут настраивать их, я бы жестко запрограммировал их. Нет смысла создавать что-то очень сложное ради динамики, если приложение будет в основном статичным.
Обратите внимание, что этот вопрос не совсем подходит для stackru. programmers.stackexchange.com, вероятно, будет лучше