trinity-cms-bundles/src/Trinity/Bundle/SlideshowBundle/Form/Type/SlideshowItemsContainerBlockType.php

56 lines
1.5 KiB
PHP

<?php
namespace Trinity\Bundle\SlideshowBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;
use Trinity\Bundle\SlideshowBundle\Block\SlideshowItemsContainerBlock;
use Trinity\Bundle\SlideshowBundle\Model\SlideshowItemQuery;
use Trinity\Bundle\ContentManagerBundle\Form\Type\BlockType;
class SlideshowItemsContainerBlockType extends BlockType
{
protected $options = array(
'data_class' => 'Trinity\Bundle\SlideshowBundle\Block\SlideshowItemsContainerBlock',
'cascade_validation' => true,
);
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'value',
'hidden'
);
$builder->add(
'slideshow_items',
'collection',
array(
'type' => new SlideshowItemType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => true
)
);
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
$data = $form->getData();
if ($data === null) {
$data = new SlideshowItemsContainerBlock();
}
$view->vars = array_replace($view->vars, array(
'slideshow_items' => $data->getSlideshowItems()
));
}
public function getName()
{
return 'slideshow_items_container_block';
}
}