加载不在Twig模板的公用文件夹中的js文件

时间:2017-06-21 21:09:41

标签: twig slim

我的文件结构如下:

history.replaceState(null, "/NewsArchive.aspx", "Story=New-site-launched&ID=17")

在我的index.php文件中,我有这个:

---public(Documentroot folder, where all my css,js, images loads from)
---models
---modules {all my modules customer, db_management e.t.c)
---scripts
  |---ivr_builder
    |------ui-bootstrap-tpls-0.2.js
--twig_templates {All my ta}
    |---layout.twig

然后在我的浏览器中,我收到此错误:

use \Psr\Http\Message\ServerRequestInterface as Request;
    use \Psr\Http\Message\ResponseInterface as Response;

    require '../vendor/autoload.php';
    spl_autoload_register(function ($classname) {
        require "../models/" . $classname . ".php";
    });

    $config['displayErrorDetails'] = false;
    $app = new \Slim\App(["settings" => $config]);
    $container = $app->getContainer();
    // Register component on container
    $container['view'] = function ($container) {
        $view = new \Slim\Views\Twig(
           '/var/www/html/ivr/twig_templates', ['cache' => false]);


        $env = $view->getEnvironment();
            $lexer = new Twig_Lexer($env, array(
            'tag_comment'   => array('{#', '#}'),
            'tag_block'     => array('{%', '%}'),
            'tag_variable'  => array('[[', ']]'),
            'interpolation' => array('#{', '}'),
        ));
        $env->setLexer($lexer);
       $loader = new \ Twig_Loader_Filesystem('ivr/scripts/ivr_builder/ui-bootstrap-tpls-0.13.4.js');
       $env->getLoader();



        return $view;
    };

我的layout.swig标题如下所示:

Name                         | Status
---------------------------- | ------ 
angular-aside.js             | 200 
jquery.js                    | 200 
ui-bootstrap-tpls-0.1.3.4.js | 500

请在浏览器上提供有关未加载原因的建议。

1 个答案:

答案 0 :(得分:0)

我可以轻松使用xsendfile加载它:

发送文件 使用xsendfile发送文件非常简单:

XSendFile On
XSendFilePath "/path/to/directory/containing/js/files"

您可以省略第一个标题,在这种情况下,浏览器不一定会显示下载文件对话框。此外,X-Sendfile标头不会显示在用户的浏览器中,并且永远不会看到他们收到的文件的真实位置。

您不需要发送Content-Length标头,因为Apache会为您处理这个问题。也在Slim上找到了这个:

$app->get('/get-file', function () use ($app) {
    $res = $app->response();
    $res['X-SendFile'] = '/path/to/directory/containing/js/files/foo.js';
});

在Slim应用程序路由回调中,使用上面指定的文件路径中文件的绝对路径设置X-SendFile标头:

$csv = Import-Csv .\1.csv -Delimiter ';'

$ref = [ordered]@{}
$columns = foreach ($i in 0..3) { ,[Collections.ArrayList]@() }

foreach ($row in $csv) {
    $value = $row.Column1
    $ref[$value] = $true
    $columns[0].add($value) >$null
}

foreach ($row in $csv) {
    $i = 1
    foreach ($col in 'Column2', 'Column3', 'Column4') {
        $value = $row.$col
        if (!$ref[$value]) {
            $columns[$i].add($value) >$null
        }
        $i++
    }
}

$maxLine = ($columns | select -expand Count | measure -Maximum).Maximum - 1
$csv = foreach ($i in 0..$maxLine) {
    [PSCustomObject]@{
        Column1 = $columns[0][$i]
        Column2 = $columns[1][$i]
        Column3 = $columns[2][$i]
        Column4 = $columns[3][$i]
    }
}