第一章简要地介绍了控制器动作方法是如何在同名的视图脚本中显示输出的。回忆一下:
给定URL http://localhost/blog/read/1 ...
-
blog 是控制器
-
read 是动作
-
1是一个参数(有可能有多个参数)
这映射到 ...
-
SYSTEM/source/acme/Acme/App/Blog.php
文件中的Acme_App_Blog::actionRead(1)
方法
且输出到 ...
-
SYSTEM/source/acme/Acme/App/Blog/View/read.php
文件
Solar期待在预先指定的位置找到视图脚本。Acme工作区(有一个博客应用)的默认目录结构如下:
Acme/ App/ Blog/ Layout/ Locale/ Public/ View/ Blog.php Controller/ Bread/ Layout/ Locale/ Public/ View/ Page/ Layout/ Locale/ Public/ View/ Bread.php Page.php Model/ Sql/ Filter.php
从上面的目录结构中,我们可以很明显的找到视图和布局的位置。博客程序期待在SYSTEM/source/acme/Acme/App/Blog/View
和SYSTEM/source/acme/Acme/App/Blog/Layout
目录中找到相应的视图和布局。这再直观不过了,但是,如果你打开SYSTEM/source/acme/Acme/App/Blog.php
文件,你会注意到类Acme_App_Blog
继承自类Acme_Controller_Page
。这一点很重要,因为它直接影响到了类栈;Solar查找文件的等级制度。在这种情况下,Solar首先在SYSTEM/source/acme/Acme/App/Blog/View
目录中寻找视图,如果视图不存在,它便到SYSTEM/source/acme/Acme/Controller/Page/View
目录中寻找。对于布局也是一样。阅读本章时请牢记这些。