Symfony 4 UndefinedMethodException addFlash - PullRequest
0 голосов
/ 14 мая 2019

У меня странная ошибка в Symfony 4

файлы "вдохновлены" документацией Symfony.

Вот мой сервисный файл

<?php
namespace App\Services;

class MessageGenerator
{
    public function getHappyMessage()
    {
        $messages = [
    'You did it! You updated the system! Amazing!',
    'That was one of the coolest updates I\'ve seen all day!',
    'Great work! Keep going!',
];

    $index = array_rand($messages);

    return $messages[$index];
}
}

Вот мой контроллер

<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use App\Services\MessageGenerator;

class DefaultController
{
private $message;

public function __construct(MessageGenerator $messageGenerator)
{

    $message = $messageGenerator->getHappyMessage();
    $this->addFlash('success',$message);
    // ...
}


public function getMessage(){
    return $this->message;
}

public function index()
{
    return new Response("<p>Hello !</p> ");
}
}

Когда я запускаю этот код, я получаю сообщение об ошибке: Попытка вызвать неопределенный метод с именем «addFlash» класса «App \ Controller \ DefaultController».

Есть идеи?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Поскольку addFlash является вспомогательным методом, вам необходимо расширить AbstractController, чтобы получить к нему доступ:

class DefaultController extends AbstractController

См. документы .

0 голосов
/ 15 мая 2019

Теперь оно перешло на ControllerTrait. Проще говоря,

use \Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait;

где-то после начала объявления класса вашего контроллера:

class DefaultController
{
    use \Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait;

    private $message;
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...