juanmiguelbesada/doctrine-translatable-form-bundle

dev-master 2019-08-30 12:53 UTC

This package is auto-updated.

Last update: 2024-08-29 05:00:11 UTC


README

此包添加了一个新的FormType,用于简化使用 Gedmo Doctrine Extensions 和 StofDoctrineExtensionsBundle 创建可翻译表单。

安装

使用 Symfony Flex 的应用程序

打开命令行控制台,进入您的项目目录并执行

$ composer require juanmiguelbesada/doctrine-translatable-form-bundle

不使用 Symfony Flex 的应用程序

步骤 1:下载包

打开命令行控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本

$ composer require juanmiguelbesada/doctrine-translatable-form-bundle

此命令需要您全局安装了 Composer,如 Composer 文档的安装章节中所述。

步骤 2:启用包

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的包列表中来启用包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new JuanMiguelBesada\DoctrineTranslatableFormBundle\JuanMiguelBesadaDoctrineTranslatableFormBundle(),
        );

        // ...
    }

    // ...
}

步骤 3:配置包

最后,配置 TranslatableType 使用的默认语言

juan_miguel_besada_doctrine_translatable_form:
    locales: ['es', 'en', 'fr'] #you can add as much as you need

使用方法

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use JuanMiguelBesada\DoctrineTranslatableFormBundle\Form\TranslatableType;

class CategoryType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        // you can add the translatable fields
        $builder
             ->add("name", TranslatableType::class, array(
                 'label' => 'Name',
                 'type' => TextType::class,
                 'type_options' => array(
                     'required' => false,
                     ...
                 )
             ))
             ->add("description", TranslatableType::class, array(
                 'type' => TextareaType::class,
                 'locales' => array('es', 'fr', 'de', 'gl'), //Define custom languages
                 'type_options' => array(
                     'attr' => array(
                         'class' => 'my_class'
                     ),
                     ...
                 )
             ))
             ->add('enabled') // you can add the rest of the fields using the standard way
        ;
    }
    
    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class'   => 'AppBundle\Entity\Category'
        ));
    }
}