matt9mg / concrete5-symfony-form
Concrete5 的 Symfony 表单集成
1.0
2020-07-06 16:31 UTC
Requires
- php: >=7.2.5
- doctrine/annotations: ^1.10
- doctrine/cache: ^1.10
- symfony/form: 4.*
- symfony/http-foundation: ^5.1
- symfony/security-csrf: ^5.1
- symfony/templating: ^5.1
- symfony/translation: ^5.1
- symfony/validator: ^5.1
This package is auto-updated.
Last update: 2024-09-07 15:28:25 UTC
README
表单组件允许您在 Concrete 5 中使用 Symfony 表单组件轻松创建、处理和重用 HTML 表单。
测试于 8.5.4 +
资源
- https://documentation.concrete5.org/
- https://symfony.com.cn/doc/current/components/form.html
- https://github.com/matt9mg/concrete5-symfony-form/issues
安装
composer require matt9mg/concrete5-symfony-form
在视图中使用表单组件
以下是一个使用 doctrine 实体的通用示例,但也适用于原始表单或其他类。
use Matt9mg\Concrete5\Symfony\Form\FormFactory; public function view() { $factory = (new FormFactory( $this->app->make('session') ))->createFormFactory(); $em = $this->app->make(EntityManagerInterace::class); $entity = $em->getRepostiory(MyEntity:class); $form = $factory->create(MyForm::class, $entity); $form->handleRequest($this->request); if ($form->isSubmitted() === true && $form->isValid() === true) { $em->persist($entity); $em->flush(); //... } $this->set('formView', $form->createView()); }
渲染表单
use Matt9mg\Concrete5\Symfony\Form\FormRenderer; $formHelper = (new FormRenderer()) ->build() ->getFormHelper(); // Render the form view echo $formHelper->start($formView); echo $formHelper->label($formView->vars['form']['name']); echo $formHelper->widget($formView->vars['form']['name']); echo $formHelper->errors($formView->vars['form']['name']); echo '<br />'; echo $formHelper->label($formView->vars['form']['text']); echo $formHelper->widget($formView->vars['form']['text'], ['attr' => ['style' => 'border: 10px']]); echo $formHelper->errors($formView->vars['form']['text']); echo $formHelper->end($formView);
覆盖提供的模板或添加自定义模板
use Matt9mg\Concrete5\Symfony\Form\FormRenderer; $formHelper = (new FormRenderer()) ->addTemplatePath(__DIR__ . '/my/template/path') ->build() ->getFormHelper();
如何使用 C5 特定表单扩展
新增两种类型 FileManagerType::class 和 SitemapType::class。
以下新配置选项有公共常量供这些选项使用。
FileManagerType::class 的配置选项
在正常 symfony 方式中,当声明字段类型数组时,以下选项可用于此字段类型。
file_manager_type => 'APP' 或 'AUDIO' 或 'DOC' 或 'FILE' 或 'IMAGE' 或 'TEXT' 或 'VIDEO'
file_manager_args => []
表单类中的示例
public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add('relatedImage', FileManagerType::class, [ 'file_manager_type' => FileManagerType::FILE_MANAGER_TYPE_FILE, ]) ; }
SitemapType::class 的配置选项
在正常 symfony 方式中,当声明字段类型数组时,以下选项可用于此字段类型。
selector_type => 'SELECT_PAGE' 或 'QUICK_SELECT' 或 'MULTIPLE_SITEMAP' 或 'SELECT_FROM_SITEMAP'
selector_type_args => []
selector_type_starting_point => 'HOME_CID'
public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add('relatedPage', SitemapType::class, [ 'selector_type' => SitemapType::SITEMAP_TYPE_SELECT_PAGE, ]) ; }
反馈
欢迎反馈,想要添加一些功能请提出 PR,希望这能帮到您 :)