<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Eccube\Form\Type\Master;
use Eccube\Form\Type\MasterType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ProductListOrderByType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$options = $event->getForm()->getConfig()->getOptions();
if (!$event->getData()) {
$data = current(array_keys($options['choice_loader']->loadChoiceList()->getValues()));
$event->setData($data);
}
});
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$options = $event->getForm()->getConfig()->getOptions();
$values = $options['choice_loader']->loadChoiceList()->getValues();
if (!in_array($event->getData(), $values)) {
$data = current($values);
$event->setData($data);
}
});
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'class' => 'Eccube\Entity\Master\ProductListOrderBy',
]);
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'product_list_order_by';
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return MasterType::class;
}
}