Twig 无法加载资产
Twig is not able to load assets
我正在尝试使用 slim-extras 和 twig 进行瘦身。问题是我无法将 css 或 js 文件包含到 twig html 中。直接从浏览器访问 css 和 js 文件给出 404 未找到错误以及浏览器控制台抛出 404 页面错误。
这是我的 httdocs(文件夹结构)
我的 apache 文档根目录是 /var/www/devdomain.dev/public
和 DirectoryIndex index.php
这是我的 index.php 在 public 文件夹
这里我尝试用 $app->hook 添加 hook 并将其传递给 twig 也没有用。
<?php
require '../vendor/autoload.php';
// Prepare app
$app = new \Slim\Slim(array(
'templates.path' => '../templates',
));
// Create monolog logger and store logger in container as singleton
// (Singleton resources retrieve the same log resource definition each time)
$app->container->singleton('log', function () {
$log = new \Monolog\Logger('slim-skeleton');
$log->pushHandler(new \Monolog\Handler\StreamHandler('../logs/app.log', \Monolog\Logger::DEBUG));
return $log;
});
$app->hook('slim.before', function () use ($app) {
$app->view()->appendData(array('baseUrl' => 'templates/'));
});
// Prepare view
$app->view(new \Slim\Views\Twig());
$app->view->parserOptions = array(
'charset' => 'utf-8',
'cache' => realpath('../templates/cache'),
'auto_reload' => true,
'strict_variables' => false,
'autoescape' => true
);
$app->view->parserExtensions = array(new \Slim\Views\TwigExtension());
// Define routes
$app->get('/', function () use ($app) {
// Sample log message
$app->log->info("Home-Page '/' route");
// Render index view
$app->render('index.phtml');
});
// Run app
$app->run();
所以我的问题是:如何将模板路径或资产路径传递给带有 slim 的树枝?
编辑:如果 css 或 public 文件夹中的 js 文件可以包含。
我认为这与您的设置有关。您的浏览器在 index.php
上,他将由此搜索您的资产但找不到它们 - 因为它们不在您的 vhost
.
上
它们实际上就在那里,但是当 apache 在 public 文件夹中启动时,您的浏览器无法离开那里。该资产必须 public(或直接 "echo-ed" 到您的模板中)。
我正在尝试使用 slim-extras 和 twig 进行瘦身。问题是我无法将 css 或 js 文件包含到 twig html 中。直接从浏览器访问 css 和 js 文件给出 404 未找到错误以及浏览器控制台抛出 404 页面错误。
这是我的 httdocs(文件夹结构)
我的 apache 文档根目录是 /var/www/devdomain.dev/public
和 DirectoryIndex index.php
这是我的 index.php 在 public 文件夹
这里我尝试用 $app->hook 添加 hook 并将其传递给 twig 也没有用。
<?php
require '../vendor/autoload.php';
// Prepare app
$app = new \Slim\Slim(array(
'templates.path' => '../templates',
));
// Create monolog logger and store logger in container as singleton
// (Singleton resources retrieve the same log resource definition each time)
$app->container->singleton('log', function () {
$log = new \Monolog\Logger('slim-skeleton');
$log->pushHandler(new \Monolog\Handler\StreamHandler('../logs/app.log', \Monolog\Logger::DEBUG));
return $log;
});
$app->hook('slim.before', function () use ($app) {
$app->view()->appendData(array('baseUrl' => 'templates/'));
});
// Prepare view
$app->view(new \Slim\Views\Twig());
$app->view->parserOptions = array(
'charset' => 'utf-8',
'cache' => realpath('../templates/cache'),
'auto_reload' => true,
'strict_variables' => false,
'autoescape' => true
);
$app->view->parserExtensions = array(new \Slim\Views\TwigExtension());
// Define routes
$app->get('/', function () use ($app) {
// Sample log message
$app->log->info("Home-Page '/' route");
// Render index view
$app->render('index.phtml');
});
// Run app
$app->run();
所以我的问题是:如何将模板路径或资产路径传递给带有 slim 的树枝?
编辑:如果 css 或 public 文件夹中的 js 文件可以包含。
我认为这与您的设置有关。您的浏览器在 index.php
上,他将由此搜索您的资产但找不到它们 - 因为它们不在您的 vhost
.
它们实际上就在那里,但是当 apache 在 public 文件夹中启动时,您的浏览器无法离开那里。该资产必须 public(或直接 "echo-ed" 到您的模板中)。