Блоки не подключаются к шаблону в Symfony

Я пытаюсь изучить Symfony 4 и его шаблоны. Когда я пытаюсь соединить блоки с такими шаблонами:

// templates/base2.html.twig
<!DOCTYPE html>
<html>
    <body>
    <h2>test</h2>
        {% block blockoftext %}{% endblock %}
    </body>
</html>

(код блока)

// templates/mainpage/index.html.twig
{% extends 'base2.html.twig' %}

{% block blockoftext %}
<h1>And I say: {{ string }}</h1>
{% endblock %}

а затем используйте это так:

// src/Controller/mainpage.php
<?php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class mainpage extends AbstractController
{
      /**
      * @Route("/mainpage")
      */
    public function mainpage()
    {
        $text = 'Hello, world!';
        return $this->render('base2.html.twig', array(
            'string' => $text,
        ));
    }
}
?>

выход

<!DOCTYPE html>
<html>
    <body>
    <h2>test</h2>

Итак, блок blockoftext не подключен. Что мне делать, чтобы получить такой результат:

<!DOCTYPE html>
<html>
    <body>
    <h2>test</h2>
    <h1>And I say: Hello, world!</h1>

?

У вас он немного задом наперед. вы должны рендерить index.html.twig вместо base2

Andrew Nolan 14.07.2018 17:53

Визуализируйте mainpage/index.html.twig вместо макета. Разве это не очевидно? И сначала следуйте за https://symfony.com/doc/current/templating.html, он охватывает основы.

emix 14.07.2018 18:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В

public function mainpage()
{
    $text = 'Hello, world!';
    return $this->render('base2.html.twig', array(
        'string' => $text,
    ));
}

Измените возврат на

return $this->render('index.html.twig', array(
    'string' => $text,
));

Индексный файл является расширением файла base2. А не наоборот. Таким образом, index будет включать base2, но base2 не будет включать ничего из index.

Другие вопросы по теме