将数据从控制器发送到视图或在视图中包含逻辑?
我有一个网页,我试图根据正在浏览的页面的类别创建一个上下文菜单。如果类别位于 animals
上,则基于分段的 url 将包含 animal
,即。 http://www.mywebbie.com/livingthings/display/category/animals
。
要构建上下文菜单,我需要访问包含 subcat_id
、subcat_name
、cat_id
列的数据库表 subcategory
并选择 cat_id
与 animals
对应的所有行。
我应该从控制器访问数据库(通过模型方法),然后将包含子类别名称的数组传递给视图吗?或者一切都应该在视图中完成,其中有加载返回子类别数组的模型方法的代码?
顺便说一句,我正在使用 PHP 框架 Codeigniter。
I have a webpage where I am trying to create a contextual menu depending on the category of the page being browsed. If the category is on animals
, the segment based url will contain animal
, ie. http://www.mywebbie.com/livingthings/display/category/animals
.
To build the contextual menu, I will need to access my database table subcategory
with columns subcat_id
, subcat_name
, cat_id
and select all rows with cat_id
corresponding to that of animals
.
Should I access the database (via the model method) from the controller, then pass the array containing the subcategory names to the view? Or should everything be done within the view, where there is code that loads the model method that returns an array of subcatergories?
Btw, I'm using PHP framework Codeigniter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,控制器负责与模型通信并处理数据,视图负责呈现数据。
以最简单的形式(假设是一个简单的数组)将数据提供给控制器中的视图。
Yes, The controller takes care of communicating with the model and handling the data, the view takes care of presenting the data.
Make the data available to the view from the controller, in the most simple form, lets say a simple array.
不熟悉 CI,但如果您有某种 ActiveRecord 或 ORM,请向类别(?)实体添加 getAllSubCats() 方法,并在循环类别时调用它。
如果上述内容没有意义:视图甚至不应该知道数据库存在,因此要回答您的问题,请在控制器中执行此操作。或者更好的是,在模型中进行获取并将结果传递回控制器。
Not familliar with CI, but if you have some kind of ActiveRecord or ORM, then add a getAllSubCats() method to the category(?) entity and call it when you loop through categories.
If the above doesn't make sense: View shouldn't even know a database exists, so to answer your question, do it in the Controller. Or better yet, do the fetching in the Model and pass the results back into the Controller.