Php Zend Framework是否每个网页都有它';s自己的控制器、索引和视图?
我想确定我的设置是否正确。在一个有10个页面的典型网站上,每个页面是否都有自己的控制器和自己的索引,以及自己的视图文件夹和自己的index.phtml作为视图 或者您是否有一个控制器具有多个Page1Action、Page2Action等,并且在view/index文件夹中有多个不同名称的view.phtml页面 我倾向于前者,因为这样我可以为每个页面使用更干净的控制器Php Zend Framework是否每个网页都有它';s自己的控制器、索引和视图?,php,zend-framework,Php,Zend Framework,我想确定我的设置是否正确。在一个有10个页面的典型网站上,每个页面是否都有自己的控制器和自己的索引,以及自己的视图文件夹和自己的index.phtml作为视图 或者您是否有一个控制器具有多个Page1Action、Page2Action等,并且在view/index文件夹中有多个不同名称的view.phtml页面 我倾向于前者,因为这样我可以为每个页面使用更干净的控制器 是否有标准,还是主观的?通常,您会为一组相关的动作创建一个控制器。相关的手段是主观的 非常粗略地说,一组相关操作在同一个模型上
是否有标准,还是主观的?通常,您会为一组相关的动作创建一个控制器。相关的手段是主观的 非常粗略地说,一组相关操作在同一个模型上运行。至少这是一个很好的起点,但它很少能简单地解决这个问题,因为现实世界中很少有应用程序只包含每个模型上的CRUD操作 如果将模型从简单的数据访问组件中分离出来,则可以更明智地为模型定义控制器操作的逻辑分组。模型是您的大部分代码用于业务逻辑的地方。数据库持久性只是模型的一个(可选)内部细节,用于保存请求之间的状态。但模型不一定使用数据库。它可以是独立的,也可以是其他模型对象的聚合
默认情况下,每个操作都有自己的视图脚本。但这也只是一个起点,因为您可以使用布局使许多视图脚本共享一些相同的标记,并且可以使用视图帮助程序和部分等等。通常,您会为一组相关的操作创建一个控制器。相关的手段是主观的 非常粗略地说,一组相关操作在同一个模型上运行。至少这是一个很好的起点,但它很少能简单地解决这个问题,因为现实世界中很少有应用程序只包含每个模型上的CRUD操作 如果将模型从简单的数据访问组件中分离出来,则可以更明智地为模型定义控制器操作的逻辑分组。模型是您的大部分代码用于业务逻辑的地方。数据库持久性只是模型的一个(可选)内部细节,用于保存请求之间的状态。但模型不一定使用数据库。它可以是独立的,也可以是其他模型对象的聚合
默认情况下,每个操作都有自己的视图脚本。但这也仅仅是一个起点,因为您可以使用布局使许多视图脚本共享一些相同的标记,并且您可以使用视图帮助程序和部分等等。您的站点地图将在这个问题中发挥主要作用。但是,这里有几个例子来代替这个 示例1。平坦
/foo
/bar
/baz
您可能希望使用单独的控制器:Foo/IndexController.php、Bar/IndexController.php和Baz/IndexController.php,每个控制器都有一个indexAction()方法将信息传递给视图(再次单独)
示例2。现在稍微低一点
/foo/bar
/baz
您只需要两个控制器:Foo/BarController和Baz/IndexController。如果/foo需要一个登录页,为了安全起见,您必须添加一个foo/IndexController.php。您的操作仍然是indexAction()。因为您还没有深入到第三层,所以您的视图仍然是index.phtml
示例3。直线
/foo/bar/baz
您可以使用onc控制器:Foo/BarController.php。如果需要/foo和/foo/bar的登录页,则需要/foo的另一个控制器(foo/IndexController)和这两个控制器的indexAction()。使用/foo/bar/baz,您现在实际上也可以使用一个稍微不同的操作-bazAction()(在foo/BarController.php内部)。您的视图现在是baz.phtml
摘要。
站点地图越宽,控制器就越多,操作也就越少。站点地图越窄,控制器越少,操作越多
附言。
我还应该指出,这也取决于使用默认路由模式。如果您在路由模式方面做一些更复杂的事情,那么这一切都是一目了然的。有时,我们使用路由来控制类的数量。当我们有一个大的站点地图时,可以创建一些自定义路由,并在控制器中使用_call()来适当地传递视图数据。这只是给这只猫剥皮的另一种方法。你的网站地图将在这个问题上扮演重要角色。但是,这里有几个例子来代替这个 示例1。平坦
/foo
/bar
/baz
您可能希望使用单独的控制器:Foo/IndexController.php、Bar/IndexController.php和Baz/IndexController.php,每个控制器都有一个indexAction()方法将信息传递给视图(再次单独)
示例2。现在稍微低一点
/foo/bar
/baz
您只需要两个控制器:Foo/BarController和Baz/IndexController。如果/foo需要一个登录页,为了安全起见,您必须添加一个foo/IndexController.php。您的操作仍然是indexAction()。因为您还没有深入到第三层,所以您的视图仍然是index.phtml
示例3。直线
/foo/bar/baz
您可以使用onc控制器:Foo/BarController.php。如果需要/foo和/foo/bar的登录页,则需要/foo的另一个控制器(foo/IndexController)和这两个控制器的indexAction()。使用/foo/bar/baz,您现在实际上也可以使用一个稍微不同的操作-bazAction()(在foo/BarController.php内部)。您的视图现在是baz.phtml
摘要。
站点地图越宽,控制器就越多,操作也就越少。站点地图越窄,控制器越少,操作越多
附言。
我也应该说,