5.2 视图和布局的位置

第一章简要地介绍了控制器动作方法是如何在同名的视图脚本中显示输出的。回忆一下:

给定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/ViewSYSTEM/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目录中寻找。对于布局也是一样。阅读本章时请牢记这些。