为什么li3HTML帮助程序有时没有生成正确的路径



问题

在我的锂电池安装的'default'布局中,我有以下代码:

<?php echo $this->html->script(array('jquery-1.7.1-dev.js')); ?>

对于所有正常请求(例如/path/to/framework/users/login,其中Users是一个模型,并且有一个UsersController::login方法),它被正确地呈现为:

<script type="text/javascript" src="/path/to/framework/js/jquery-1.7.1-dev.js"></script>` 

然而,在由我的错误处理代码呈现的视图中,/path/to/framework被省略,并且它被呈现为:

<script type="text/javascript" src="/js/jquery-1.7.1-dev.js"></script>

为什么在这种情况下辅助对象没有正确渲染路径


错误处理方法

我的错误处理方法是基于一些在线教程。在config/bootstrap/errors.php中,我有:

$exampleConditions = array('type' => 'Exception');
ErrorHandler::apply('lithiumactionDispatcher::run', $exampleConditions, function($info, $params) {
return ErrlogsController::handleError($info, $params);
});
ErrorHandler::run();

ErrlogsController类中,我有:

public static function handleError($info, $params) {
// (Code to save error info to DB omitted from example)
$view = new View(array(
'paths' => array(
'template' => '{:library}/views/{:controller}/{:template}.{:type}.php',
'layout'   => '{:library}/views/layouts/{:layout}.{:type}.php'
)
));
return $view->render('all', array(), array(
'template' => '404',
'controller' => 'errlogs',
'layout' => 'default',
'type' => 'html'
));
}

我已经深入研究了lithiumtemplateviewRenderer::applyHandlerFile适配器的代码,它们进行了实际的渲染,试图理解这种行为,我还尝试向$view'paths'数组添加'elements'密钥,但我有点卡住了。如有任何建议或帮助,我们将不胜感激。


背景

下面的两个链接显示了如何使用ErrorHandler::apply函数(如上面的代码所示)以及ErrorHandler::config。两者都使用与上面代码中相同的方法来呈现视图,第一种方法对本文来说也很有趣,因为它还展示了如何以不同的方式处理不同类型的错误。

  • 示例一-masom
  • 示例二——Lithium wiki——展示了如何使用ErrorHandler::apply函数

框架的组件从Request对象获取其应用程序基本路径信息,View类将其委托给其助手,当然,除非它自己还没有收到。

在您的情况下,您可以将其在'request'密钥中传递给View的构造函数,或者更新为更现代版本的错误处理代码,如下所示:https://github.com/UnionOfRAD/framework/blob/master/app/config/bootstrap/errors.php

最新更新