0 like 0 dislike

Üdv! Megint gondjaim akadtak a fránya keretrendszerrel (illetve az ahhoz használt, igencsak kötött easyadminnal). Adott egy form amivel productot lehet feltölteni, módosítani. Ezen belül van egy collection form ami a képek "feltöltéséért" felelős. Ezen belül pedig van nekem egy radio buttonom amivel ki lehet választani, hogy melyik legyen a fő kép, ami a kezdőoldalon kilistázásra kerül. Az egyetlen gondom az, hogy amint új képet akarok hozzáadni más nevet kap az új radio button, és ezáltal ugye többet is ki lehet választani. Kérdés annyi lenne, hogy hogyan lehet ezt kiküszöbölni?

A collection form valahogy így néz ki:

<?php
/**
 * Created by PhpStorm.
 * User: erosa
 * Date: 2016. 04. 12.
 * Time: 23:24
 */

namespace AppBundle\Form;

use AppBundle\Entity\Images;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Vich\UploaderBundle\Form\Type\VichImageType;

class ProductImageType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('image', 'vich_image', array(
                'required'      => true,
                //'mapping'       => 'product',
                'allow_delete'  => true,
                'by_reference'  => false,
            ))
            ->add('main_img', 'radio')
        ;
    }
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => '\AppBundle\Entity\Images',
        ));
    }
}

Ezzel együtt teljes:

<?php
/**
 * Created by PhpStorm.
 * User: erosa
 * Date: 2016. 04. 13.
 * Time: 20:34
 */

namespace AppBundle\Form;

//use AppBundle\AppBundle;
use AppBundle\Entity\Images;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use AppBundle\Form\ProductImageType;

class ProductType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('images', CollectionType::class, array(
                'entry_type' => Images::class,//new ProductImageType(),
                'allow_add' => true,
                'allow_delete' => true,
                'by_reference' => false
            ))
        ;
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function setDefaultOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Product'
        ));
    }
}
kérdezve Jún 2, 2016 Symfony kategóriában Ákos Erős (23 pont) által

Nem biztos, hogy jól értem, hogy mivel próbálkozol: az image tárolja, hogy ő-e a fő kép? Nem a termék?

Igen így áll a helyzet. Most, hogy így mondod, tényleg elég hülyén hangzik ez így.

Én a következővel próbálkoznék (bár nem próbáltam ki): a product formra dobnék fel egy choice fieldet és image id alapján úgy renderelném, hogy egy sorban legyen a radio a képpel. Ha nagyon szépre akarod csinálni, akkor használhatsz pl preset listenert és úgy adod hozzá a választási lehetőségeket. (Jobban belegondolva ez az egyetlen szép megoldás)

Kérlek jelentkezz be vagy regisztrálj hogy válaszolhass erre a kérdésre.

A Veremcsere a Refaktor Magazinhoz kapcsolódó, barátságos kérdezz-felelek oldal, ahol felteheted a webfejlesztéssel és üzemeltetéssel kapcsolatos kérdésedet.

A részletekért olvasd el az üdvözlő postunkat!
Az oldal valamennyi tartalma a Creative Commons Attribution NonCommercial ShareAlike 3.0 licenc alatt érhető el.

Kapcsolódó kérdések

0 like 0 dislike
2 válasz
0 like 0 dislike
2 válasz
kérdezve Ápr 4, 2016 Symfony kategóriában Ákos Erős (23 pont) által
0 like 0 dislike
0 válasz
1 like 0 dislike
2 válasz
kérdezve Jan 7, 2016 PHP kategóriában Siegl Zoltán (63 pont) által
67 kérdés
142 válasz
354 hozzászólás
113 felhasználó