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.