Error handling 为什么LI3HTML帮助程序有时不能生成正确的路径? 问题:

Error handling 为什么LI3HTML帮助程序有时不能生成正确的路径? 问题:,error-handling,helpers,lithium,Error Handling,Helpers,Lithium,在锂离子电池安装的'default'布局中,我有以下代码: <?php echo $this->html->script(array('jquery-1.7.1-dev.js')); ?> 但是,在由错误处理代码呈现的视图中,/path/to/framework被省略,呈现为: <script type="text/javascript" src="/js/jquery-1.7.1-dev.js"></script> 在ErrlogsContr

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

<?php echo $this->html->script(array('jquery-1.7.1-dev.js')); ?>
但是,在由错误处理代码呈现的视图中,
/path/to/framework
被省略,呈现为:

<script type="text/javascript" src="/js/jquery-1.7.1-dev.js"></script>
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'
    ));
}
我的代码深入到了
lithium\template\view\Renderer::applyHandler
文件
适配器,它们执行实际的渲染来尝试和理解这种行为,我还尝试为
$view
'elements'
数组添加
'path'
键,但我有点卡住了。非常感谢您的任何建议或帮助


背景 下面的两个链接显示了如何使用
ErrorHandler::apply
函数(如上面的代码)和
ErrorHandler::config
。两者都使用与上面代码中相同的方法来渲染视图,但本文对第一种方法也非常感兴趣,因为它还展示了如何以不同的方式处理不同类型的错误

  • -显示如何使用
    ErrorHandler::apply
    函数

框架的组件从
请求
对象获取它们的应用程序基本路径信息,该对象由
视图
类委托给它的助手,当然,除非它自己没有收到它

在您的情况下,您可以在
'request'
键中将其传递给
视图的构造函数,或者更新到更现代版本的错误处理代码,如下所示:

$exampleConditions = array('type' => 'Exception');
ErrorHandler::apply('lithium\action\Dispatcher::run', $exampleConditions, function($info, $params) {
    return ErrlogsController::handleError($info, $params);
});
ErrorHandler::run();
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'
    ));
}