Я пытаюсь заставить Symfony Forms (с Twig Bridge), Slim и Twig хорошо играть вместе, но не вижу, чтобы это было успешным. Из того, что я вижу, у меня есть аспект формы, в котором все работает, в том смысле, что форма создается, метод createView() работает так, как должен, и я могу компенсировать его в шаблоне Twig и использовать {{ dump(form) }}, чтобы увидеть, что все идет так, как должно, из там.
У меня есть фактор, который создает соответствующий материал для рендеринга форм в Twig и устанавливает шаблон по умолчанию и т. д. - все, похоже, работает, но по какой-то причине, когда я возвращаю и визуализирую форму, я получаю следующую ошибку:
Type: Twig_Error_Syntax
Message: Unknown "rootform" test.
File: /var/www/mulligan/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
Line: 22
Я проверил, загружается ли FormExtension, и это так, и он определяет тестовые функции и т. д. (Одна из которых - rootform), и все, похоже, работает нормально. Это в основном фактор, который я использую для определения FormFactory (и обработки материалов Twig по мере необходимости):
/**
* @return FormFactoryInterface|null
* @throws \ReflectionException
*/
public function initialiseFactory(): ?FormFactoryInterface
{
$csrfGenerator = new UriSafeTokenGenerator();
$csrfStorage = new NativeSessionTokenStorage();
$csrfManager = new CsrfTokenManager($csrfGenerator, $csrfStorage);
$defaultFormTheme = 'form_div_layout.html.twig';
$appVariableReflection = new ReflectionClass(AppVariable::class);
$vendorTwigBridgeDirectory = \dirname($appVariableReflection->getFileName());
$viewsDirectory = PROJECT_ROOT . '/templates/form';
$twig = $this->getTwigView();
$twigEnv = new Environment(new FilesystemLoader([
$viewsDirectory,
$vendorTwigBridgeDirectory . '/Resources/views/Form'
]));
$formEngine = new TwigRendererEngine([$defaultFormTheme], $twigEnv);
$twig->getEnvironment()->addRuntimeLoader(new FactoryRuntimeLoader([
FormRenderer::class => function () use ($formEngine, $csrfManager) {
return new FormRenderer($formEngine, $csrfManager);
}
]));
$twig->addExtension(new FormExtension());
$validator = Validation::createValidator();
// Set up the Form component
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->addExtension(new CsrfExtension($csrfManager))
->addExtension(new ValidatorExtension($validator))
->getFormFactory();
$this->setFactory($formFactory);
return $this->getFactory();
}
Есть ли у кого-нибудь мысли о том, что мне может не хватать, или о чем-то, что может не инициализироваться при этом - я обычно не использую Symfony Forms и т. д., Поэтому не уверен, в чем может заключаться проблема.
NB: composer.json для версий и т. Д .:
"slim/slim": "^3.11",
"slim/php-view": "2.1.*",
"symfony/form": "^4.2",
"symfony/security-csrf": "^4.2",
"symfony/twig-bridge": "^4.2",
"symfony/validator": "^4.2",
"symfony/http-foundation": "^4.2",
"slim/twig-view": "^2.4"
заранее спасибо
это не работает в Symfony, поэтому нет AppKernel для его загрузки - я просто использую Symfony Forms и Twig Bridge для запуска этого в Slim Framework






Вы загружали библиотеку в AppKernel?