Model view controller MVC与分页

Model view controller MVC与分页,model-view-controller,zend-framework,pagination,Model View Controller,Zend Framework,Pagination,作为一名MVC新手,我一直在关注细节。一个特别的问题是让我停顿的时间比我预期的要长;标页码分页应该在模型中还是在控制器中进行 如果有必要的话,我使用的是ZF,我想对一些SQL数据的结果进行分页。分页逻辑在控制器中。您需要的任何数据,例如当前页码,都应该放在模型中 当有疑问时,数据进入模型,所有作用于数据的东西进入控制器。分页逻辑进入控制器。您需要的任何数据,例如当前页码,都应该放在模型中 当有疑问时,数据会进入模型,对数据起作用的所有内容都会进入控制器。分页将页面之间的记录分隔开,因此它只从模型

作为一名MVC新手,我一直在关注细节。一个特别的问题是让我停顿的时间比我预期的要长;标页码分页应该在模型中还是在控制器中进行


如果有必要的话,我使用的是ZF,我想对一些SQL数据的结果进行分页。

分页逻辑在控制器中。您需要的任何数据,例如当前页码,都应该放在模型中


当有疑问时,数据进入模型,所有作用于数据的东西进入控制器。

分页逻辑进入控制器。您需要的任何数据,例如当前页码,都应该放在模型中


当有疑问时,数据会进入模型,对数据起作用的所有内容都会进入控制器。

分页将页面之间的记录分隔开,因此它只从模型中收集数据,但会处理表示。除非模型固有地将输出分成多个页面(这种情况很少发生),否则我的建议是将分页逻辑(即处理页码)放在控制器中


你可能还想考虑利用一个视图助手,以最小化你放入控制器中的代码(FAT控制器不是一个好东西)。

分页在页面之间分离记录,所以它只收集模型中的数据,但是处理演示。除非模型固有地将输出分成多个页面(这种情况很少发生),否则我的建议是将分页逻辑(即处理页码)放在控制器中


你可能还想考虑利用一个视图助手,以最小化你放入控制器中的代码(FAT控制器不是一个好东西)。

< P>控制器应该处理页码的参数,然后将它传递给模型,然后它知道要检索哪些记录。 例如

$userModel->getAll((int) $_GET['page']);

(我不知道Zend Framework,但想法应该很清楚)

控制器应该处理页码的参数,然后将其传递给模型,然后模型将知道要检索哪些记录

例如

$userModel->getAll((int) $_GET['page']);

(我不知道Zend Framework,但想法应该很清楚)

不过,Zend_Paginator有一套非常方便的适配器。其中一个是
Zend\u Paginator\u Adapter\u DbSelect
,它允许您封装
Zend\u Db\u Select
查询,以便高效地对sql查询进行分页(例如限制结果)。所以我可以理解为什么你想知道在哪里构建这些。虽然您确实可以讨论模型是否是最佳位置,但我个人并不反对在我的模型中创建一个方法,如:

public function fetchEntitiesAsPaginator();
。。。它将返回一个注入了
Zend\u Paginator\u适配器\u DbSelect的
Zend\u Paginator
实例

顺便说一句:

我个人不认为一个分页员只是为了演示。我只是认为它是一个荣耀的限制器。从这个角度来看,事情已经开始有点不同了。作为旁注:
Zend\u Paginator
的表示关注点已经被
Zend\u View\u Helper\u PaginationControl
View Helper分开了。

但问题是,
Zend\u Paginator
有一组非常方便的适配器。其中一个是
Zend\u Paginator\u Adapter\u DbSelect
,它允许您封装
Zend\u Db\u Select
查询,以便高效地对sql查询进行分页(例如限制结果)。所以我可以理解为什么你想知道在哪里构建这些。虽然您确实可以讨论模型是否是最佳位置,但我个人并不反对在我的模型中创建一个方法,如:

public function fetchEntitiesAsPaginator();
。。。它将返回一个注入了
Zend\u Paginator\u适配器\u DbSelect的
Zend\u Paginator
实例

顺便说一句:

我个人不认为一个分页员只是为了演示。我只是认为它是一个荣耀的限制器。从这个角度来看,事情已经开始有点不同了。作为旁注:
Zend_Paginator
的表示关注点已经被
Zend_View_Helper_PaginationControl
View Helper分开了。

我从来没有听说过ZF。它是什么?Zend Framework,它是php框架。我从来没有听说过ZF。它是什么?Zend Framework,这是一个php框架,虽然你的最后一句话很有道理,但我不同意:“当前页码,应该放在模型中”。IMHO模型不应该关心分页。它的工作不是知道如何将数据呈现给用户。我会在控制器中保留所有分页逻辑,并且可能只是在模型中有一个“LIMIT/OFFSET”耦合,以便允许调用方法指定它需要的确切记录。不让模型知道这是用于分页还是其他。当然,只有我的2cc.Tom可能指的是ViewModel。如果您不将分页信息从控制器传递到视图,您将如何显示类似“第4页,共10页”(除非使用ViewBag)?尽管您的上一句话很有道理,但我不同意:“当前页码,应在模型中显示”。IMHO模型不应该关心分页。它的工作不是知道如何将数据呈现给用户。我会在控制器中保留所有分页逻辑,并且可能只是在模型中有一个“LIMIT/OFFSET”耦合,以便允许调用方法指定它需要的确切记录。不让模型知道这是用于分页还是其他。当然,只有我的2cc.Tom可能指的是ViewModel。如果您没有将分页信息从控制器传递到视图,您将如何显示类似“第4页,共10页”(除非使用ViewBag)?