CodeIgniter和控制器

时间:2011-12-28 17:30:05

标签: php codeigniter

我开始使用CodeIgniter,我似乎做得很好。我遇到了一个问题。

我有一个叫做文章的控制器。该网站的用户可以执行以下操作:

  • 获取slug name
  • 的文章
  • 获取类别中的文章列表
  • 获取具有x标记名称
  • 的文章列表

我的问题是我应该创建3个独立的控制器:

  • Article.php - 单篇文章
  • Category.php - 有关x类别的文章列表
  • Tag.php - 有关x标签的文章列表

或者,我应该将所有内容放在Article.php吗?

我只想弄清楚传统的做事方式。

3 个答案:

答案 0 :(得分:1)

这取决于你(当然),但听起来你想要一个控制器,只要标签和类别本身没有任何意义,没有文章。

出于语义考虑,我会用“s”将其重命名为Articles.php。然后你会有:

  

/articles/category/{$category_id}

其中“category”是类/控制器Articles的方法。请记住也要更改控制器类名称。

我可能会将“tags”方法重命名为“tagged”,类似于Stack Overflow所做的,所以url更有意义:

  

/articles/tagged/{$tag_slug}

类似于:

  

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

对于单篇文章,创建一个名为“view”的方法:

  

/articles/view/{$article_slug}

如果“标签”或“类别”是独立的实体,或者可以容纳更多的东西,而不仅仅是文章,你可能想让它们各自成为自己的控制器,但在这种情况下,我认为你不需要。

答案 1 :(得分:1)

我个人通常一般使用1个控制器并将所有内容放入其中。有人为他们网站的每个页面使用一个控制器,以便他们的网址反映得更好。

如果您为每个页面使用1个控制器,那么您将拥有像

这样的网址
example.com/blog/article
example.com/blog/about
example.com/blog/contact

如果您为每个页面使用控制器,则可以使用此类网址

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

显然,在每个控制器中都有一个索引函数。

在你的情况下,我会使用1个具有不同功能的控制器来处理标签/文章/等。

答案 2 :(得分:0)

这取决于你如何做,但我个人会把它放在一个控制器中,并给它不同的方法来显示数据。我也认为这是一种更传统的方式,但它仍然取决于项目。