1 回答
TA贡献1891条经验 获得超3个赞
我发现我需要更仔细地阅读并调查呈现的每一行代码。所以,这是一个自我评价。这就是解谜的方法。
我最终得到了这个:
use Symfony\Bridge\Twig\Extension\FormExtension;
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
use Symfony\Component\Form\FormRenderer;
use Symfony\Component\Form\Forms;
use Symfony\Component\Form\Extension\Csrf\CsrfExtension;
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
use Symfony\Component\Security\Csrf\CsrfTokenManager;
use Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator;
use Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage;
use Symfony\Component\Translation\Loader\XliffFileLoader;
use Symfony\Component\Translation\Translator;
use Twig\Environment;
use Twig\Extension\DebugExtension;
use Twig\HeaderExtension;
use Twig\Loader\FilesystemLoader;
use Twig\RuntimeLoader\FactoryRuntimeLoader;
class RequeueChargesController extends Controller
{
public function requeueCharge()
{
$defaultFormTheme = 'form_div_layout.html.twig';
$vendorDirectory = dirname(__DIR__, 2).'\vendor';
$translator = new Translator('en');
$translator->addLoader('xlf', new XliffFileLoader());
//$form->handleRequest();
$session = new Session(new PhpBridgeSessionStorage());
$csrfGenerator = new UriSafeTokenGenerator();
$csrfStorage = new SessionTokenStorage($session);
$csrfManager = new CsrfTokenManager($csrfGenerator, $csrfStorage);
$appVariableReflection = new \ReflectionClass('\Symfony\Bridge\Twig\AppVariable');
$vendorTwigBridgeDirectory = dirname($appVariableReflection->getFileName());
$loader = new FilesystemLoader(['../../templates/billing/',
$vendorTwigBridgeDirectory.'/Resources/views/Form']);
$twig = new Environment($loader, [
'debug' => true,
]);
$twig->addExtension(new HeaderExtension());
$twig->addExtension(new DebugExtension());
$twig->addExtension(new TranslationExtension($translator));
$formEngine = new TwigRendererEngine([$defaultFormTheme], $twig);
$twig->addRuntimeLoader(new FactoryRuntimeLoader([
FormRenderer::class => function () use ($formEngine, $csrfManager) {
return new FormRenderer($formEngine, $csrfManager);
}
]));
$twig->addExtension(new FormExtension());
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->addExtension(new CsrfExtension($csrfManager))
->getFormFactory();
$form = $formFactory->createBuilder(TaskType::class)
->getForm();
return $twig->render('requeueCharge.html.twig', [
'payments' => 'Charge',
'reportForm' => $form->createView()
]);
}
}
https://symfony.com/doc/3.4/components/form.html#rendering-the-form中给出的示例代码几乎不需要改动即可工作。
您可以将该示例与我必须执行的操作进行比较,以使其在 OpenEMR 代码库中运行。如果您有任何问题,请尝试我。
- 1 回答
- 0 关注
- 310 浏览
添加回答
举报
