Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework是否每个网页都有它';s自己的控制器、索引和视图?_Php_Zend Framework - Fatal编程技术网

Php Zend Framework是否每个网页都有它';s自己的控制器、索引和视图?

Php Zend Framework是否每个网页都有它';s自己的控制器、索引和视图?,php,zend-framework,Php,Zend Framework,我想确定我的设置是否正确。在一个有10个页面的典型网站上,每个页面是否都有自己的控制器和自己的索引,以及自己的视图文件夹和自己的index.phtml作为视图 或者您是否有一个控制器具有多个Page1Action、Page2Action等,并且在view/index文件夹中有多个不同名称的view.phtml页面 我倾向于前者,因为这样我可以为每个页面使用更干净的控制器 是否有标准,还是主观的?通常,您会为一组相关的动作创建一个控制器。相关的手段是主观的 非常粗略地说,一组相关操作在同一个模型上

我想确定我的设置是否正确。在一个有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

摘要。

站点地图越宽,控制器就越多,操作也就越少。站点地图越窄,控制器越少,操作越多

附言。

我也应该说,