我是Codeigniter的新手,并且在上个月左右对OOP很新。我一直在玩,一直在尝试制作一个包含10个帖子列表的博客页面,并为每个帖子提供不同的功能和可能性。
例如,将来我希望能够在帖子下面显示不同的按钮,具体取决于他们是否是登录用户,或者他们是帖子创建者等。
我最好是制作一个新课程'blog_posts'并为我在页面上显示的每个帖子制作一个实例吗?像:
$this->load->library('blog_posts'); // in library or models, I'm not too sure?
$new_inst = new blog_posts;
$new_inst->show_post();
我的最终目标是在将来根据需要轻松更新,更改或修改,我在网上看过简单的教程:
http://blog.pisyek.com/2011/03/create-a-simple-blog-using-codeigniter-2-0-part-1/
但是我看不到它们将来很容易更新和修改。我还没有看到很多其他CI应用程序使用新的类实例,所以我认为CI中可能有不同的方式?是否在CI中使用了新实例?
答案 0 :(得分:0)
从控制器开始。使用Codeigniter - 您可以在模型中执行的任何操作,您可以在控制器中执行。最简单的方法 - 只需将您的方法放在控制器中并设置一个简单的视图文件。
始终进行简单的完整性检查以确保基础知识正确无误。设置一个控制器并回显一些文本。
在控制器中尝试:
下一步 - 尝试使用$ Data将博客结果传递给视图。
在工作之后,您了解基础知识 - 然后开始将您的方法推送到模型。当您重构和清理时,您的控制器将变得“更薄”。
通常对于博客文章,你会有一个模型,它会返回博客文章,也可能有你的插入/更新/删除方法。我说可能是因为拥有一个公共博客控制器通常更有意义,它只显示博客文章。然后是一个单独的博客管理控制器 - 仅供登录的用户使用。
这两个控制器 - 可以共享相同的博客模型。例如,要在管理员屏幕上显示博客帖子 - 您可以使用与在公共页面上显示帖子相同的方法。而您可能拥有管理博客模型 - 其中包含create / update / delete方法。
通过这种方式,您可以从一开始就明确区分用户角色 - 正在查看公共博客的人不应该删除帖子。公开演示博客课程不是“负责”编辑。
这是我正在努力解决的问题 - 就像演示博客的正常方式是将所有方法放在一起。这对于“我们可以用博客文章做什么”而言是有道理的 - 但它在用户角色方面没有任何意义。
ok下一步 - 处理您的创建,更新和删除方法。
接下来尝试创建登录方法。使登录过程单独的控制器/模型/视图。
最终,您可以在博客管理类的构造函数中进行一次方法调用,以检查用户是否已登录 - 否则会将其重定向到登录页面。这样你就不必在视图文件等中反复检查以确保它们被授权。
(强烈推荐net tuts网站上的免费codeigniter教程系列)
更多漫无边际:
从演员(用户,角色)的角度来看待这个过程 - 对我而言,有助于澄清控制链应该是什么。真正关键的角色 - 就像有权删除所有博客帖子的管理员一样 - 系统应该知道这个角色位于班级的顶端。
最好'最糟糕的例子'就是“这是一个超级管理员吗?”检查视图代码。视图不应该知道管理员角色。当您在某个视图文件中引用管理员角色时,如果您想以某种方式更改该管理员角色,会发生什么?现在你必须进入所有的视图文件!
类和方法名称 - 我正在努力不在URL中泄露任何业务或crud或字段或任何其他类型的业务信息。没有名词没有动词没有ids。尽可能简单,只有很少的公共网址'进入应用程序。
很棒的是,codeigniter让你的方法变得私密。对于关键页面:仅使用类中的公共索引方法进行重定向,并将所有其他方法设为私有。
使用直接访问私有方法的路由。或者广泛使用的公共方法,如果成功 - 就像你已经确认了他们的证书一样 - 转到类中的私人方法,如$ this-> _showAdminPage()
这是定义角色的地方 - 博客编辑器 - 从功能的角度来看非常清楚,并将宝贵的商业知识保密。