CodeIgniter и контроллеры - PullRequest
       1

CodeIgniter и контроллеры

2 голосов
/ 28 декабря 2011

Я начал использовать CodeIgniter и, похоже, у меня все хорошо. Я столкнулся с проблемой, хотя.

У меня есть контроллер под названием Articles. Пользователи сайта могут делать следующее:

  • Получить статью по имени пули
  • Получить список статей в категории
  • Получить список статей с именем x tag

Моя проблема заключается в том, я должен создать 3 отдельных контроллера:

  • Article.php - для отдельных статей
  • Category.php - Для списка статей, которые имеют х категории
  • Tag.php - Для списка статей, которые имеют х тегов

Или я должен все поместить в Article.php?

Я просто пытаюсь выяснить традиционный способ ведения дел.

Ответы [ 3 ]

1 голос
/ 28 декабря 2011

Это зависит от вас (конечно), но звучит так, будто вам нужен один контроллер, если теги и категории сами по себе ничего не значат, без статей.

Ради семантики я бы переименовал его в Articles.php с помощью "s". Тогда у вас будет:

/articles/category/{$category_id}

Где "категория" - это метод класса / контроллера Articles. Просто не забудьте изменить имя класса контроллера.

Я бы, вероятно, переименовал метод "tags" в "tagged", аналогично тому, что делает переполнение стека, поэтому url имеет немного больше смысла:

/articles/tagged/{$tag_slug}

Аналогично:

http://stackoverflow.com/questions/tagged/codeigniter

Для отдельных статей создайте метод с именем "view":

/articles/view/{$article_slug}

Если «Теги» или «Категории» были автономными объектами или могут содержать больше вещей, чем просто Статьи, вы можете захотеть сделать их каждый своим собственным контроллером, но в этом случае я не думаю, что вам нужно.

1 голос
/ 28 декабря 2011

Лично я обычно обычно использую 1 контроллер и помещаю в него все. Кто-то использует контроллер для каждой страницы своего сайта, чтобы их URL отображались лучше.

Если вы используете 1 контроллер для каждой страницы, у вас будут URL, такие как

example.com/blog/article
example.com/blog/about
example.com/blog/contact

в то время как если вы используете контроллер для каждой страницы, у вас могут быть такие URL-адреса

example.com/blog
example.com/about
example.com/contact

очевидно, что в каждом из этих контроллеров есть индексная функция.

В вашем случае я бы использовал 1 контроллер с различными функциями, которые обрабатывают теги / статьи / и т. Д.

0 голосов
/ 28 декабря 2011

Это действительно зависит от вас, как это сделать, но я лично поместил бы его в один контроллер и предоставил бы разные способы отображения данных.Я также считаю, что это более традиционный способ, но он все еще зависит от проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...