2011-12-28 143 views
2

我已经开始使用CodeIgniter,我似乎做得很好。尽管我遇到了一个问题。CodeIgniter和控制器

我有一个名为Articles的控制器。该网站的用户可以执行以下操作:在类别

    • 找蛞蝓名
    • 文章获取的文章列表获取的有X标记名的文章列表

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

    • Article.php - 对于单篇
    • Category.php - 对于有X类
    • Tag.php文章列表 - 对于有X标记

    或者,我应该把一切都在Article.php文章列表?

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

  • +0

    因为所有这三个函数返回的文章,我会选择坚持只有一个文章控制器。 – bobo 2011-12-28 17:41:14

    回答

    1

    这是给你(当然),但它本身听起来像你想一个控制器,只要标签和分类没啥意思,没有文章。

    对于语义起见,我将其与“S”重命名为Articles.php。然后,你将有:

    /articles/category/{$category_id}

    其中, “类别” 是类/控制器Articles的方法。只记得改变你的控制器类名称。

    我可能会重命名为“标记”的“标签”的方法,类似于堆栈溢出呢,所以URL让人有点更有意义:

    /articles/tagged/{$tag_slug}

    类似:

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

    对于个别文章,创建一个方法叫“观点”:

    /articles/view/{$article_slug}

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

    +0

    有效的点。如果我是使用多个控制器它们将只包含1种方法无论如何这将是'{类}/{方法}/{段塞}”。我现在可能会坚持一个控制器。只要这样做是可以接受的。我不仅学习使用CI,还学习使用MVC模式时的常规练习。谢谢你的评论。 – GV1 2011-12-28 17:42:07

    +1

    只记得没有规则,只有约定 - 那些将因人而异。做什么适合你,并从经验中学习。如果你最终只用一种方法使用控制器,看一下CI ['_remap()'](http://codeigniter.com/user_guide/general/controllers.html#remapping)方法或者使用'routes .php'通过'index()'方法路由所有的东西,并保持URL很好,干净。 – 2011-12-28 17:44:42

    0

    这真的取决于你如何做到这一点,但我个人把它放在一个控制器,并给它用于显示数据的不同方法。我也将此视为更传统的方式,但仍取决于该项目。

    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个控制器与处理标签/用品/等等不同的功能。