1
2
您可以在模型上提供接受
通过这种方式,所有分页代码都包含在模型中,您可以自由地使用DB适配器,而不会感到您已经破坏了这个概念。 另外,控制器实际上不应该以任何方式设置寻呼机,因为您正确地将寻呼机与数据绑定在一起(模型用于数据,而不仅仅是数据库连接)。
|
2
2
Zend_Paginator现在有一个setfilter方法,允许您将数据从Row对象加载到所需的任何模型对象:
|
3
1
我 真的? 需要一个解决方案,在该解决方案中,我可以使用zend_-db_-table类方法作为分页器适配器的资源,而不是数组或zend_-db_-select对象。 这种高级建模与Zend_Paginator的标准适配器不兼容。我继续为所有迫切需要答案的人解决了这个问题,就像我一样。
这就是它在控制器中的工作方式:
此适配器工作的唯一要求是在模型方法参数列表中列出以下参数(以任何顺序[适配器将通过反射检测方法签名]: $limit=0,$offset=0,$count=false 分页器将使用$limit、$offset和$count参数的适当值调用您的方法。就是这样! 例子:
|
4
0
嗯,我不能回答您使用dbselect的问题,但我确实遇到了与减少拉入的行数相关的代码(在ibuildings博客的评论中)。可能对一些读者有用。
|
5
0
使用MVC时需要考虑的一个重要因素是,模型适用于所有域逻辑,而控制器适用于业务逻辑。一般的经验法则是模型不应该知道接口(控制器或视图),但它们不需要是简单的db访问器。为了尽可能地可移植,他们也不应该知道格式化或显示属性(除非这是域逻辑的一部分)。 事实上,所有操作域逻辑的逻辑都应该在模型中,而不是在控制器中。控制器应该从接口传递信息,根据需要将其转换为模型,并选择要显示/更新的视图。如果它与接口没有任何关系,那么它最好在模型中表示,而不是在控制器中表示,因为如果您决定稍后交换控制器/视图对,它将允许更多的代码重用。 理想情况下,您的模型应该提供一个访问所需信息的接口。只要模型不知道MVC的VC部分,那么在该接口后面如何实现这一点就不是MVC关心的问题。如果这意味着传递一个paginator对象,这不是对MVC原则的直接违反,尽管如果paginator与渲染本身有任何关系(抱歉,我不知道Zend),最好是传入它的一个接口(即缺少渲染方法),让模型操纵/填充它,然后再将其传递出去。这样,您就没有从模型生成呈现代码,如果您决定稍后将应用程序作为控制台应用程序(或添加某种类型的API接口),则可以替换分页器实现。 |
6
0
如果使用dbselect适配器,则只需传入结果集,这在保持某些分离方面有很长的路要走。所以在你的控制器里:
在视图中,您可以通过分页器访问数据。
这是一个简化的例子(我也在引导程序中设置了默认的滚动样式和部分默认视图),但是我认为在控制器中设置它并不坏,因为从模型中检索到的数据无论如何都由控制器放置到视图中,并且这个实现使用的是结果集而不是模型。 |
7
0
您还可以直接实现Zend_Paginator_适配器_接口,或者在任何需要支持分页的模型中扩展Zend_Paginator_适配器_DBselect。 这样,模型就不会直接了解任何关于视图、控制器甚至Zend_Paginator的信息,但是可以直接与Zend_Paginator一起使用,无论它在哪里最有意义。
有了这样的功能,您就可以使用这个类的实例直接实例化一个寻呼机,无论它在哪里最有意义:
现在,您可以使用这个类作为集合中任何“模型”的基类。 |
pia-sophie · 带子级的嵌套视图,不会显示子级 6 年前 |
pia-sophie · 注册查看帮助程序了解问题 6 年前 |
GThamizh · Mysql查询格式从ZEND更改为Yii2 7 年前 |
p.wright · Zend2 Post请求 7 年前 |