Zend框架中的resources.layout问题

时间:2010-12-28 15:04:59

标签: php zend-framework layout

我是ZF初学者。

我能看到http://localhost/square/public

然后我在目录中添加了var / www / square / layouts和master.phtml。 我有以下/var/www/square/application/configs/appliction.ini

当我访问同一页面时,它没有显示任何内容。

我在这里做错了什么?

提前致谢。

的application.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""
resources.layout.layoutPath = APPLICATION_PATH "/layouts"
resources.layout.layout = "master"


[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

注意:

  1. 我设置了一个虚拟主机,所以我可以在http://square.localhost看到它,如果我拿出来的话 resources.layout.layoutPath = APPLICATION_PATH“/ layouts” resources.layout.layout =“master”

  2. 当我在/var/www/square/application/modules/default/views/scripts/index/index.phtml中回显APPLICATION_PATH时,如果我不添加它会输出/ var / www / square / application

    resources.layout.layoutPath = APPLICATION_PATH“/ layouts” resources.layout.layout =“master”

  3. 我已经为所有文件提供了666,为所有目录提供了777。

  4. 更新

    错误消息如下

      

    致命错误:未捕获的异常   'Zend_Controller_Router_Exception'   有消息'路线回家不是   定义'in   /var/www/square/library/Zend/Controller/Router/Rewrite.php:318   堆栈跟踪:

         

    0 /var/www/square/library/Zend/Controller/Router/Rewrite.php(464):   Zend_Controller_Router_Rewrite-> getRoute( '家')

         

    1 /var/www/square/library/Zend/View/Helper/Url.php(49):   Zend_Controller_Router_Rewrite->装配(阵列,   '家',假,真)

         

    2 [内部功能]:Zend_View_Helper_Url-> url(数组,   '家')

         

    3 /var/www/square/library/Zend/View/Abstract.php(342):   call_user_func_array(Array,Array)

         

    4 /var/www/square/application/layouts/master.phtml(15):   Zend_View_Abstract-> __呼叫( 'URL',   数组)

         

    5 /var/www/square/application/layouts/master.phtml(15):   Zend_View-> url(Array,'home')

         

    6 /var/www/square/library/Zend/View.php(108):   include('/ var / www / square ...')

         

    7 /var/www/square/library/Zend/View/Abstract.php(880):   Zend_View-> _run('/ var / www / square ...')

         

    8 /var/www/square/library/Zend/Layout.php(796):   Zend_View_Abstract-> render('master.phtml')

         在/var/www/square/library/Zend/Controller/Router/Rewrite.php中<9>   在318行

    更新2。

    我正在读一本名为Zendframework A Beginner Guide的书。

    我在master.phtml中有以下内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <base href="/" />
        <link rel="stylesheet" type="text/css" href="/css/master.css" />
      </head>
      <body>
        <div id="header">
          <div id="logo">
            <img src="/images/logo.gif" />
          </div>
    
          <div id="menu">
            <a href="<?php echo $this->url(array(), 'home'); ?>">HOME</a>
            <a href="<?php echo $this->url(array('page' => 'services'), 'static-content'); ?>">SERVICES</a>
            <a href="#">CONTACT</a>
          </div>
        </div>
    
        <div id="content">
          <?php echo $this->layout()->content ?>
        </div>
    
        <div id="footer">
          <p>Created with <a href="http://framework.zend.com/">Zend Framework</a>. Licensed under <a href="http://www.creativecommons.org/">Creative Commons</a>.</p>
        </div>    
      </body>
    </html>
    

    我注释掉了,它现在显示了一个页面。

     <a href="<?php // echo $this->url(array(), 'home'); ?>">HOME</a>
     <a href="<?php // echo $this->url(array('page' => 'services'), 'static-content'); ?>">SERVICES</a>
    

5 个答案:

答案 0 :(得分:2)

空白页面表示存在一些错误但由于此配置而隐藏:

phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0 
resources.frontController.params.displayExceptions = 0 
你可以改变成这样的:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1 

并使用te error msg更新您的问题 所以我们可以帮到你:)

<强>更新 此错误表明zf试图找到名为home的路由  ,路由减速通常保存在application.ini,所以我不确定这是否是现成的应用程序或你是这个应用程序的程序员

但是尝试寻找类似的东西:

$this->url(<!-- i am not sure what you might here but it usually array of module , controller , action --> , "home") ; 
<{1>}中的

并再次使用该代码段再次更新您的问题

更新2

我很确定您是否已将这3行添加到master.phtml并在布局中取消注释代码您的问题将得到解决

application.ini

答案 1 :(得分:1)

<强>更新

我看到你标记了答案,但我不确定你是否真的解决了这个问题,但看起来你很简单地错过了路由名home的路由定义。如果你定义了这个,你应该没问题,假设你还有一个名为static_content的路线。


  

当我回显APPLICATION_PATH时,它输出/ var / www / square / application而没有.ini文件中的布局。

APPLICATION_PATH永远不会有布局......它只是应用程序的路径。在文件系统上。此外,如果您未在虚拟主机中运行,APPLICATION_PATH/publicDOCUMENT_ROOT,则可能需要设置:

resources.frontController.baseUrl = "/square/public"

使每个标记正常工作...默认情况下,假设APPLICATION_PATH/public是您的DOCUMENT_ROOT

你可能在某个地方遇到错误。修改index.php以使用开发环境,这样您就会看到错误和异常(如果有)。然后用这些详细信息更新您的问题。

答案 2 :(得分:1)

我想我已经找到了这个。作者稍稍向后写了这本书。如果您继续本章,接下来的几页将介绍如何创建主路由以及静态内容路由,您的应用程序将再次工作。这只是糟糕的编辑,我已经购买了4本Zend Framework书籍,他们似乎都有同样的问题。如果有人花时间实际尝试/浏览他们自己的一本书,然后再发布破碎的代码并与人们的头脑搞砸,那将是非常好的。这是一个非常令人沮丧的事情: - |。

答案 3 :(得分:1)

更新2

我很确定您是否已将这3行添加到您的application.ini并取消注释 布局中的代码可以解决您的问题

    resources.router.routes.home.route = /home
    resources.router.routes.home.defaults.module = default           
    resources.router.routes.home.defaults.controller = index
    resources.router.routes.home.defaults.action = index  
    resources.router.routes.static-content.route = /content/:page              
    resources.router.routes.static-content.defaults.module = default           
    resources.router.routes.static-content.defaults.controller = static-content
    resources.router.routes.static-content.defaults.action = display      

为我工作:) 我遇到了这个问题,并且发现它应该与de application.ini文件有关..但是在Zend中作为一个总菜鸟,我无法弄明白自己要添加什么。

答案 4 :(得分:0)

Shin,我相信你现在已经知道你所拥有的master.phtml假定你已经完成了本书第二章的结尾。我犯了同样的错误,使用来自配套网站的master.phtml,而没有比较那个特定页面上的书中发布的那个带我到你帖子的那个。 :)

@prodigitalson:  isn't DOCUMENT_ROOT set to APPLICATION_PATH/../public?  not APPLICATION_PATH/public