matt9mg/concrete5-symfony-form

Concrete5 的 Symfony 表单集成

1.0 2020-07-06 16:31 UTC

This package is auto-updated.

Last update: 2024-09-07 15:28:25 UTC


README

表单组件允许您在 Concrete 5 中使用 Symfony 表单组件轻松创建、处理和重用 HTML 表单。

测试于 8.5.4 +

资源

安装

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::classSitemapType::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,希望这能帮到您 :)