Symfony 3.4: не удалось загрузить тип: класс не существует

Извините, я новичок в Symfony и пытался найти ответ, но ничего не вышло. Я использую Symfony3.4, который был обновлен с Symfony 2.8 несколько месяцев назад.

Теперь я пытаюсь сделать довольно простую вещь: использовать formType в контроллере, но несмотря ни на что, Symfony продолжает показывать следующую ошибку: Не удалось загрузить тип "Cha\GeneralBundle\Form\StripePaymentType": class не существует.

Вот мой StripePaymentType — очень, очень простой:

namespace Cha\GeneralBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

class StripePaymentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', TextType::class);
    }

    public function getBlockPrefix()
    {
        return 'cha_stripe_payment_form';
    }

}

Вот мое действие контроллера, еще раз, основное (я даже не писал там никакого кода из-за этой странной ошибки):

public function upgradeOfferPaymentAction(Offers $offers)
{

    $form = $this->createForm(StripePaymentType::class);


    return $this->render(
        '@ChaGeneral/Offers/offer_payment.html.twig', array(
            'form' => $form->createView()
    ));
}

Я пытался использовать свою форму как услугу, но это тоже не сработало:

cha.stripe.payment.form:
    class: Cha\GeneralBundle\Form\StripePaymentType
    tags:
        - { name: cha_stripe_payment_form }

Я наверное что-то упускаю, но не могу понять что...

Заранее благодарим за помощь!


person Assigyn    schedule 17.08.2018    source источник
comment
Пожалуйста, покажите свое заявление об использовании в вашем контроллере.   -  person Sodium    schedule 17.08.2018
comment
К сожалению, извините, я должен был опубликовать это раньше: use Cha\GeneralBundle\Form\StripePaymentType;   -  person Assigyn    schedule 17.08.2018
comment
Я не вижу ничего плохого. Я бы попросил вас опубликовать путь к вашему классу формы, но Symfony выдаст ошибку, если путь к файлу не соответствует имени класса.   -  person Sodium    schedule 17.08.2018
comment
Это действительно вызывает ту же ошибку, если я использую $form = $this-›createForm('Cha\GeneralBundle\Form\StripePaymentType'); .   -  person Assigyn    schedule 17.08.2018
comment
Попробуйте изменить имя класса вашей формы. Symfony должен выдать ошибку о том, что класс и имя файла не совпадают. Если это не так, это может означать, что Symfony вообще не анализирует файл.   -  person Sodium    schedule 17.08.2018
comment
Кажется, вы правы, если я изменю имя класса, он все равно выдаст ту же ошибку: Не удалось загрузить тип Cha\GeneralBundle\Form\Manala: класс не существует. Как вы думаете, почему Symfony не анализирует этот файл? Все остальные типы форм в этом каталоге функционируют.   -  person Assigyn    schedule 17.08.2018
comment
Извините, я имел в виду переименовать ваш класс в файл StripePaymentType.php, а не в ваш контроллер. Symfony должен выдать ошибку прежде всего, даже если вы попытаетесь очистить кеш с помощью консоли. Если Symfony выдает эту ошибку, это означает, что автозагрузка классов работает правильно. Если нет, файл не анализируется.   -  person Sodium    schedule 17.08.2018
comment
Тот же результат, Symfony не выдает еще одну ошибку:/   -  person Assigyn    schedule 17.08.2018
comment
Это странно. Нет ошибки в расширении файла? Я помню, как потратил часы, потому что несколько недель назад мой файл был назван .phpp... Возможно, это связано с вашим процессом обновления, но я не могу вам помочь, так как я начал с 3.4. Если вы разместите содержимое своего файла services.yaml, кто-то еще сможет вам помочь.   -  person Sodium    schedule 17.08.2018
comment
Большое спасибо за попытку. Расширение файла правильное, к сожалению, полный файл services.yml огромен (тем более, что проект имеет 8 различных пакетов с собственным огромным файлом services.yml), я думаю, я мог бы прийти откуда угодно.   -  person Assigyn    schedule 17.08.2018
comment
Если бы я был на вашем месте, я бы начал с большой очистки конфигурации ваших служб. Как вы наверняка знаете, большая часть этой конфигурации бесполезна, так как Symfony 3.3 теперь обрабатывает внедрение зависимостей. Избавление от максимального количества бесполезной конфигурации может облегчить определение этой (а также будущих проблем). symfony.com/doc/current/service_container/3.3-di-changes. html   -  person Sodium    schedule 17.08.2018


Ответы (2)


Вы должны добавить эту строку вверху класса формы:

use Symfony\Component\Form\Extension\Core\Type\TextType;

Возврат к версии SF не является решением, это просто уклонение от проблемы.

person JuliSmz    schedule 14.10.2018

Ну, наконец, я нашел причину этой проблемы: кто-то обновил композитор, и мы обновили Symfony 3.4.13 до Symfony 3.4.14. Простая перезагрузка помогла, теперь все снова работает.

Большое спасибо за твою помощь!

person Assigyn    schedule 20.08.2018