83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Propel\Bundle\PropelBundle\Form\Type;
|
|
|
|
use Symfony\Component\Form\AbstractType;
|
|
use Symfony\Component\OptionsResolver\Exception\MissingOptionsException;
|
|
use Symfony\Component\Form\FormBuilderInterface;
|
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
use Propel\Bundle\PropelBundle\Form\EventListener\TranslationCollectionFormListener;
|
|
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
|
|
|
/**
|
|
* form type for i18n-columns in propel
|
|
*
|
|
* @author Patrick Kaufmann
|
|
*/
|
|
class TranslationCollectionType extends AbstractType
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
|
{
|
|
if (!isset($options['options']['data_class']) || null === $options['options']['data_class']) {
|
|
throw new MissingOptionsException('data_class must be set');
|
|
}
|
|
if (!isset($options['options']['columns']) || null === $options['options']['columns']) {
|
|
throw new MissingOptionsException('columns must be set');
|
|
}
|
|
|
|
$listener = new TranslationCollectionFormListener($options['languages'], $options['options']['data_class']);
|
|
$builder->addEventSubscriber($listener);
|
|
}
|
|
|
|
public function getParent()
|
|
{
|
|
return 'collection';
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getName()
|
|
{
|
|
return 'propel_translation_collection';
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function configureOptions(OptionsResolver $resolver)
|
|
{
|
|
$resolver->setRequired(array(
|
|
'languages'
|
|
));
|
|
|
|
$resolver->setDefaults(array(
|
|
'type' => 'propel_translation',
|
|
'allow_add' => false,
|
|
'allow_delete' => false,
|
|
'options' => array(
|
|
'data_class' => null,
|
|
'columns' => null
|
|
)
|
|
));
|
|
}
|
|
|
|
// BC for SF < 2.7
|
|
public function setDefaultOptions(OptionsResolverInterface $resolver)
|
|
{
|
|
$this->configureOptions($resolver);
|
|
}
|
|
}
|