Я прочитал Silex Cookbook
по управлению активами в шаблонах http://silex.sensiolabs.org/doc/cookbook/assets.htmlрасширить Twig определить URL-адрес АКТИВЫ
и написать этот код в моем app/app.php
:
$app['twig'] = $app->share($app->extend('twig', function ($twig, $app) {
$twig->addFunction(new \Twig_SimpleFunction('asset', function ($asset) {
// implement whatever logic you need to determine the asset path
return sprintf('http://assets.examples.com/%s', ltrim($asset, '/'));
}));
return $twig;
}));
$app->get('/', function() use ($app) {
return $app['twig']->render('index.twig', array(
'title' => "Hello World",
'colors' => array("red", "green", "yellow"),
));
});
и index.twig
содержат:
{% extends "layout.twig" %}
{% block title %}
{{ title }}
{% endblock %}
{% block content %}
<h1>{{ title }}</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi quibusdam numquam laudantium eum asperiores non libero odio quae debitis beatae perferendis eius esse molestiae voluptatum vel inventore quasi. Quo sint sequi sunt amet sapiente tempora autem iusto praesentium rerum ducimus.</p>
<ul>
{% for color in colors %}
<li>{{ color }}</li>
{% endfor %}
</ul>
{{ asset('/css/styles.css') }}
{% endblock %}
Все в порядке, но когда я использую asset
в другом twig
файлах, я wi LL получить эту ошибку:
Twig_Error_Syntax in Parser.php line 370:
A template that extends another one cannot have a body in "admin/dashboard.twig" at line 3.
, например, мой AdminDashboard
контроллер содержит:
<?php
namespace App\Controller\Admin;
use Silex\Application;
class AdminDashboard
{
function __construct()
{
return "Dashboard";
}
function indexAction(Application $app)
{
return $app['twig']->render('admin/dashboard.twig', array(
'title' => "Hello World",
'colors' => array("red", "green", "yellow"),
));
}
}
и admin/dashboard.twig
содержат:
{% extends "layout.twig" %}
{{ asset('/css/styles.css') }}
Но когда я посещаю свою admin
страницу я получаю выше ошибки.
Спасибо за подсказку, к сожалению, я новичок в силексе, и я думаю, что эта ошибка может быть возвращена к веточке, извините, извините – MajAfy