VictorMacko / symfony-smarty-standalone-forms
Requires
- smarty/smarty: ~3.1
- symfony/form: >=2.1
- symfony/framework-bundle: >=2.7
- symfony/http-foundation: >=2.1
- symfony/http-kernel: >=2.1
- symfony/templating: >=2.7
- symfony/validator: >=2.1
This package is auto-updated.
Last update: 2024-09-23 22:22:47 UTC
README
使用不同模板引擎实现 Symfony2 表单组件
'views/Form' 目录包含了一个在 Twig 中创建的 symfony2 bootstrap 实现(水平):https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_layout.html.twig 及 https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig
'ControllerSymfonyFormTrait.php' 文件包含了一个 trait,可以包含在您的基控制器中,它添加了 'createForm' 和 'createFormBuilder' 函数,详情请见此处; https://symfony.com.cn/doc/current/forms.html
Smarty
web/index.php 包含一个 'demo' 控制器,用于整合各种组件,创建一个 Smarty 实例,然后输出它。
Volt
包含了对 Volt 的支持
在 register-engine 块(services.php)中,包含以下行;
$view->registerEngines(array( '.volt' => function ($view, $di) use ($config) { $volt = new VoltEngine($view, $di); $volt->setOptions(array( 'compiledPath' => $config->application->cacheDir, 'compiledSeparator' => '_', 'compileAlways' => true )); $compiler = $volt->getCompiler(); SymfonyFormHelper::registerFormPluginsWithVolt($compiler); return $volt; }, '.phtml' => 'Phalcon\Mvc\View\Engine\Php' ));
在您的控制器中,要创建表单,只需包含以下内容;
$form = $this ->createFormBuilder() ->add('testField', \SymfonyStandaloneForms\Type\TextType::class, [ 'constraints' => [ new \Symfony\Component\Validator\Constraints\Length(['min' => 2]) ] ]) ->add('submit', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class) ->getForm(); $form->handleRequest(\Symfony\Component\HttpFoundation\Request::createFromGlobals()); if($form->isSubmitted()) { if($form->isValid()) { // get data from field; $data = $form->get('testField')->getData(); } } $this->view->form2 = $form->createView();
然后您的 volt 代码需要包含标准模板代码来渲染表单 - 例如;
{{ form_start(form, {'attr': {'novalidate': 'novalidate'} }) }}
{{ form_row(form['testField']) }}
{{ form_rest(form) }}
{{ form_end(form) }}
纯 PHP
如果 Smarty 不适合您,还有纯 PHP 表单渲染选项。