Hallo,
nach endlosen Versuchen stelle ich die Frage hier. Der FormTypes ist echt schwierig zu verstehen... aus der Symfony Doku:
Also, ich habe ein (Filter-) Objekt mit Eigenschaften:
Jeder Filter enthält enstprechende Filters, welche wiederum Arrays sind
Diese Werte will ich nun im ChoiceType darstellen:
Eigentlich denke ich, mit der Funktion übergebe ich ein Array nach dem Muster $key => $value, also:
und im HTML erwarte ich
Alle meine Ansätze führen immer zum selben Ergebnis:
Es ist mit Sicherheit ein Verständnisproblem, dank für Hilfe
Gruss
nach endlosen Versuchen stelle ich die Frage hier. Der FormTypes ist echt schwierig zu verstehen... aus der Symfony Doku:
In other words, the value of each item is the value you want to get/set in PHP code, while the key is what will be shown to the user
PHP-Code:
// Filter.php
<?php
namespace App\Entity\Filter;
class MyFilter {
private $areaFilters = [];
private $catFilters = [];
...
public function setAreaFilters(array $filters) {
$this->areaFilters = $filters;
}
public function getAreaFilters(): array {
return $this->areaFilters;
}
public function setCatFilters(array $filters) {
$this->areaFilters = $filters;
}
public function getCatFilters(): array {
return $this->areaFilters;
}
...
}
PHP-Code:
$areaFilters = [
'AreaA' => [
'id' => 1,
'disabled' => true,
'checked' => false
],
'AreaB' => [
'id' => 7,
'disabled' => true,
'checked' => true
]
];
PHP-Code:
// MyController.php
<?php
...
$filterForm = $this->createForm(MyFilterType::class, $filter);
?>
// MyFormType.php
<?php
...
$builder
->add('areaFilters', ChoiceType::class, [
'choices' => $this->createAreaChoices(),
'expanded' => true,
'required' => false,
'label' => false,
'placeholder' => false,
'multiple' => true,
]);
...
private function createAreaChoices() {
$choices = [];
foreach ($this->options['data']->getAreaFilters() as $key => $filter) {
$choices[$key] = $filter['id'];
}
...
PHP-Code:
[
'AreaA' => 1,
'AreaB' => 2,
...
]
HTML-Code:
... <input type="checkbox" id="my_filter_areaFilters_0" name="my_filter[areaFilters][]" value="1"> ... <input type="checkbox" id="my_filter_areaFilters_0" name="my_filter[areaFilters][]" value="2"> ...
HTML-Code:
Notice: Array to string conversion ...
Gruss
Kommentar