victormacko / symfony-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:36:53 UTC
README
Symfony2表单组件的实现,支持不同的模板引擎
'views/Form'目录包含了一个基于Twitter Bootstrap的实现(水平布局)的symfony2 bootstrap,在Twig中创建(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'文件包含了一个特质,可以在基础控制器中使用,它添加了'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表单渲染选项。