【发布时间】:2018-02-07 04:06:45
【问题描述】:
简单介绍一下,我正在尝试制作一个用于发布故事和查看故事的网络应用程序。
我将我的控制器分为两个,故事控制器和用户控制器。我编写的任何涉及我项目的故事部分的功能我都在故事控制器中编写,我拥有的任何用户功能都在用户控制器中。
例如:
公共函数 add_story(){} 在故事控制器中。
公共函数 register(){} 在用户控制器中。
在加载我的视图时,我将它们分成模板和页面。
内部模板是页眉/导航栏/页脚。这些页面都是我的 html 的内容,所以只有页面不同。
$this->load->view('template/header');
$this->load->view('template/navbar');
$this->load->view('pages/page_name');
$this->load->view('template/footer');
现在我的问题在导航栏中。我想添加一个通知功能。我脑子里已经有了它,我只需要实现它,但我对如何实现它犹豫不决。显然我需要该函数是 GLOBAL 否则我必须将它声明给我的控制器的所有函数。这只会使我的代码更长且难以遵循。
我将简单地创建一个名为通知的数据库表。以基本列作为状态,只有 2 个可能的变量为“已见”“未见”。因为我有一个用户有两个角色(作者和读者),作者提交给发布的故事的任何新评论,以及读者添加到书架/书签故事的任何新章节。
无论如何,我想创建一个全局函数来解析表以获取登录用户的所有更新(最近 5 个)并将它们打印在我的导航栏上的下拉列表中,并在 html 中设置一个 php if 语句是否它是看不见的与否,是否突出显示。(粗略的想法,在实施过程中稍后调整)
我的问题是,我想到的第一种实现方法是对我的控制器使用构造函数或索引函数,并将数据存储在全局 $data = array('notification' => array()); 变量中。
然后我搜索了谷歌并找到了另一种方法,那就是使用 base_controller。如果用户登录与否,我也没有在我的控制器中实施检查。我可以与通知一起在构造函数中执行此操作,但我也可以使用基本控制器执行此操作,对吗?
无论如何,我想问一下两者中哪一个更好(我更倾向于第二个,但我可能是错的)和/或是否有更好的方法?
【问题讨论】:
-
我认为你可以创建助手把通知函数放在那里,现在你可以在控制器中调用这个函数
-
我知道,但与上面的那些相比,我认为制作一个单独的助手只是很复杂?不是以复杂的方式,而是以一种迂回的方式?无论如何,我认为为它制作一个库比制作一个助手更好。我看到的所有其他 CI_plugin 总是被做成一个库。我只是觉得那不是它的预期用途?然后我再次喜欢 php/ci 的使用灵活性,所以我想没有错误的方法,但它更多的是更容易接受的。
-
你只需创建助手并自动加载它,这样你就可以在任何地方直接调用任何函数
标签: php twitter-bootstrap codeigniter