THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Du côté admin, pour la config de mon module, j'ai mis en place plusieurs cases à cocher et je souhaiterais que lorsque l'admin revient sur la page de configuration, il soit en mesure de voir les checkboxes qu'il avait choisies déjà cochées.

Voici mon form:

$this->formBuilder
            ->add('day_of_month', 'choice', array(
                    'choices' => $this->getChoicesList(),
                    "required" => true,
                    "multiple" => true,
                    'constraints' => array(
                        new Constraints\NotBlank(),
                    ),
                    'label' => $this->translator->trans('Some text', [], MyModule::DOMAIN_NAME),
                    'data' => json_decode(ConfigQuery::read("mymodule_day_of_month", ""), true)
                )
            );

voici ma fonction save:

if (null !== $response = $this->checkAuth(array(AdminResources::MODULE), array('mymodule'), AccessManager::UPDATE)) {
            return $response;
        }

        $form = new \MyModule\Form\Configuration($this->getRequest());
        $resp = array(
            "error" =>  0,
            "message" => ""
        );
        $response=null;

        try {
            $vform = $this->validateForm($form);
            $data = $vform->getData();

            foreach ($data as $name => $value) {
                if (! $form->isTemplateDefinedHiddenFieldName($name)) {
                    ConfigQuery::write("mymodule_" . $name, json_encode($value), false, false);
                }

                Tlog::getInstance()->debug(sprintf("%s => %s", $name, json_encode($value)));
            }
        } catch (\Exception $e) {
            $resp["error"] = 1;
            $resp["message"] = $e->getMessage();
        }

        return JsonResponse::create($resp);

Et voici mon affichage (en partie):

<div class="row">

                        <div class="col-md-6">

                            {form_field field="day_of_month"}
                            <label for="checkboxes" class="control-label">{$label} : </label><br/>
                            <div id="checkboxes" style="display: inline">
                                {foreach $choices as $choice}
                                <div class="day_class">
                                    <label for="checkbox_day_{$choice->value}" class="fix_width">{$choice->label}</label>
                                    <input type="checkbox" id="checkbox_day_{$choice->value}" name="{$name}"
                                           value="{$choice->value}" {* condition pour mettre checked *}>
                                </div>
                                {if {$choice->value%7 == 0}}
                                <br/>
                                {/if}
                                {/foreach}
                            </div>
                            {/form_field}
                        </div>

                    </div>

Merci pour votre aide.