块无法连接到Symfony中的模板

I'm trying to learn Symfony 4 and it's templates. When I'm trying to connect blocks with templates like this:

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

(code of block)

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

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

and then use it like this:

// 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,
        ));
    }
}
?>

the output is

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

,so, block 'blockoftext' isn't connected. What should I do to get result like this:

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

?

In

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

Change the return to be

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

The index file is an extension of the base2. not the other way around. So index will includebase2, but base2 will not include anything from index