Проблема с resources.layout в фреймворке Zend - PullRequest
1 голос
/ 28 декабря 2010

Я новичок в 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. Когда яecho APPLICATION_PATH в /var/www/square/application/modules/default/views/scripts/index/index.phtml выводит / var / www / square / application, если я не добавлю

    ресурсов.layout.layoutPath = APPLICATION_PATH "/ layouts" resources.layout.layout = "master"

  3. Я дал 666 для всех файлов и 777 для всех каталогов.

Обновление:

Следующие сообщения об ошибках

Неустранимая ошибка: необработанное исключение 'Zend_Controller_Router_Exception' с беспорядкомage 'Маршрут дома не определен' в /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 ('home')

1 /var/www/square/library/Zend/View/Helper/Url.php(49): Zend_Controlew_Router_-> Assembly (Array, 'home', false, true)

2 [внутренняя функция]: Zend_View_Helper_Url-> url (Array, 'home')

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 -> __ call ('url', Array)

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')

9 в /var/www/square/library/Zend/Controller/Router/Rewrite.php в строке 318

Обновление 2.

Я читаю книгу под названием Zendframework A Руководство для начинающих.

У меня есть следующее в 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 ]

2 голосов
/ 28 декабря 2010

пустая белая страница означает, что есть некоторая ошибка, но она скрыта из-за этой конфигурации:

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 

и обновитевопрос об ошибке msg, чтобы мы могли помочь вам :)

update эта ошибка указывает, что zf пытается найти маршрут с именем home, замедление маршрутов обычно сохраняется в application.ini, поэтомуя не уверен, готово ли это приложение, или вы программист этого приложения

, но попробуйте найти что-то вроде:

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

в master.phtml и снова обновитевопрос еще раз с этим фрагментом кода

обновление 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           
1 голос
/ 08 августа 2011

обновление 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      

у меня сработало :) 1006 * У меня была эта проблема, и я понял, что она должна быть связана с файлом de application.ini ... но, будучи абсолютным новичком в Zend, я не мог понять, что добавить все самостоятельно.

1 голос
/ 20 июля 2011

Мне кажется, я понял это.Автор написал книгу немного задом наперед.Если вы продолжите в этой главе, на следующих нескольких страницах будет объяснено, как создать домашний маршрут, а также маршрут со статическим контентом, и ваше приложение снова будет работать.Это просто плохое редактирование, я купил 4 книги по Zend Framework, и похоже, что у них у всех одинаковые проблемы.Было бы очень хорошо, если бы кто-то потратил время, чтобы на самом деле попробовать / просмотреть одну из своих книг, прежде чем выпускать испорченный код и связываться с людьми.Это очень обескураживающая вещь: - |.

1 голос
/ 28 декабря 2010

ОБНОВЛЕНИЕ:

Я вижу, вы отметили ответ, но я не уверен, что вы действительно решили проблему, но похоже, что вы просто упустили определение маршрута для имени маршрутизатора home,Если вы определили это, у вас должно быть все в порядке, если у вас также есть маршрут с именем static_content.


Когда я отображаю APPLICATION_PATH, он выводит / var / www / square / application без макета в.INI-файл.

У APPLICATION_PATH никогда не будет макета ... это просто путь к приложению.в файловой системе.Кроме того, если вы не запускаете это на виртуальном хосте, где APPLICATION_PATH/public является вашим DOCUMENT_ROOT, вам может потребоваться установить:

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

, чтобы все работало правильно ... по умолчаниюпредполагается, что APPLICATION_PATH/public - это ваш DOCUMENT_ROOT.

Возможно, вы где-то получили ошибку.Измените ваш index.php, чтобы использовать среду разработки, чтобы вы могли видеть ошибки и исключения, если они есть.Затем обновите ваши вопросы с этими деталями.

0 голосов
/ 01 июля 2011

Шин, я уверен, что ты уже понял, что твой master.phtml предполагает, что ты прошел до конца второй главы книги. Я сделал ту же ошибку, используя master.phtml с сайта-компаньона, не сравнивая его с тем, который размещен в книге на той конкретной странице, которая привела меня к вашему посту. :)

@prodigitalson:  isn't DOCUMENT_ROOT set to APPLICATION_PATH/../public?  not APPLICATION_PATH/public
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...