VictorMacko/symfony-smarty-standalone-forms

此包的最新版本(dev-master)没有提供许可证信息。

dev-master 2017-10-18 00:53 UTC

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.twighttps://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 表单渲染选项。