Compare commits
No commits in common. "63583b9b25ab8d579117d4a58184e9a99899b53a" and "ab7e20becd10b4a8d094c651542cd3e927da362a" have entirely different histories.
63583b9b25
...
ab7e20becd
|
@ -62,10 +62,7 @@ class FieldCollection extends Collection
|
||||||
*/
|
*/
|
||||||
public static function fromRequest(Form $form, array $input): self
|
public static function fromRequest(Form $form, array $input): self
|
||||||
{
|
{
|
||||||
return $form->getFields()->map(function ($field) use ($input) {
|
return $form->getFields()->each(fn ($field) => $field->value = array_key_exists($field->key, $input) ? $input[$field->key] : $field->default());
|
||||||
$field->value = array_key_exists($field->key, $input) ? $input[$field->key] : $field->default();
|
|
||||||
return $field;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function find(Field $givenField): ?Field
|
public function find(Field $givenField): ?Field
|
||||||
|
|
|
@ -4,8 +4,6 @@ namespace App\Form\Fields;
|
||||||
|
|
||||||
use App\Form\Models\Form;
|
use App\Form\Models\Form;
|
||||||
use App\Form\Models\Participant;
|
use App\Form\Models\Participant;
|
||||||
use App\Form\Presenters\BooleanPresenter;
|
|
||||||
use App\Form\Presenters\Presenter;
|
|
||||||
use Faker\Generator;
|
use Faker\Generator;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
|
@ -23,7 +21,7 @@ class CheckboxField extends Field
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'description', 'default' => '', 'rules' => ['description' => 'required|string'], 'label' => 'Beschreibung'],
|
['key' => 'description', 'default' => '', 'rules' => ['description' => 'required|string'], 'label' => 'Beschreibung'],
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,9 +72,4 @@ class CheckboxField extends Field
|
||||||
public function afterRegistration(Form $form, Participant $participant, array $input): void
|
public function afterRegistration(Form $form, Participant $participant, array $input): void
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPresenter(): Presenter
|
|
||||||
{
|
|
||||||
return app(BooleanPresenter::class);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ class DateField extends Field
|
||||||
public static function meta(): array
|
public static function meta(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
['key' => 'max_today', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Nur daten bis heute erlauben'],
|
['key' => 'max_today', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Nur daten bis heute erlauben'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ class DropdownField extends Field
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'options', 'default' => [], 'rules' => ['options' => 'present|array', 'options.*' => 'string'], 'label' => 'Optionen'],
|
['key' => 'options', 'default' => [], 'rules' => ['options' => 'present|array', 'options.*' => 'string'], 'label' => 'Optionen'],
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,7 @@ abstract class Field extends Data
|
||||||
'type' => static::type(),
|
'type' => static::type(),
|
||||||
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
||||||
'value' => static::default(),
|
'value' => static::default(),
|
||||||
|
'required' => false,
|
||||||
'nami_type' => null,
|
'nami_type' => null,
|
||||||
'for_members' => true,
|
'for_members' => true,
|
||||||
'special_type' => null,
|
'special_type' => null,
|
||||||
|
|
|
@ -25,7 +25,7 @@ class GroupField extends Field
|
||||||
public static function meta(): array
|
public static function meta(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
['key' => 'parent_field', 'default' => null, 'rules' => ['parent_field' => 'present|nullable|string'], 'label' => 'Übergeordnetes Feld'],
|
['key' => 'parent_field', 'default' => null, 'rules' => ['parent_field' => 'present|nullable|string'], 'label' => 'Übergeordnetes Feld'],
|
||||||
['key' => 'parent_group', 'default' => null, 'rules' => ['parent_group' => ['present', 'nullable', Rule::in(Group::pluck('id')->toArray())]], 'label' => 'Übergeordnete Gruppierung'],
|
['key' => 'parent_group', 'default' => null, 'rules' => ['parent_group' => ['present', 'nullable', Rule::in(Group::pluck('id')->toArray())]], 'label' => 'Übergeordnete Gruppierung'],
|
||||||
];
|
];
|
||||||
|
|
|
@ -23,7 +23,7 @@ class RadioField extends Field
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'options', 'default' => [], 'rules' => ['options' => 'present|array', 'options.*' => 'required|string'], 'label' => 'Optionen'],
|
['key' => 'options', 'default' => [], 'rules' => ['options' => 'present|array', 'options.*' => 'required|string'], 'label' => 'Optionen'],
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ class TextField extends Field
|
||||||
public static function meta(): array
|
public static function meta(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TextareaField extends Field
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['key' => 'rows', 'default' => 5, 'rules' => ['rows' => 'present|integer|gt:0'], 'label' => 'Zeilen'],
|
['key' => 'rows', 'default' => 5, 'rules' => ['rows' => 'present|integer|gt:0'], 'label' => 'Zeilen'],
|
||||||
['key' => 'required', 'default' => true, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
['key' => 'required', 'default' => false, 'rules' => ['required' => 'present|boolean'], 'label' => 'Erforderlich'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Form\Presenters;
|
|
||||||
|
|
||||||
class BooleanPresenter extends Presenter
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param mixed $value
|
|
||||||
*/
|
|
||||||
public function present($value): string
|
|
||||||
{
|
|
||||||
return $value ? 'Ja' : 'Nein';
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit bc45e0cdf792158372b0f12db8739c19beda1a4f
|
Subproject commit 7ae37c224e7579978874117436ce78c447d6ef52
|
|
@ -38,12 +38,12 @@ class FormtemplateIndexActionTest extends TestCase
|
||||||
'type' => 'DropdownField',
|
'type' => 'DropdownField',
|
||||||
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
||||||
'value' => null,
|
'value' => null,
|
||||||
|
'required' => false,
|
||||||
'nami_type' => null,
|
'nami_type' => null,
|
||||||
'for_members' => true,
|
'for_members' => true,
|
||||||
'special_type' => null,
|
'special_type' => null,
|
||||||
'hint' => '',
|
'hint' => '',
|
||||||
'options' => [],
|
'options' => [],
|
||||||
'required' => true,
|
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
->assertInertiaPath('data.meta.fields.7', [
|
->assertInertiaPath('data.meta.fields.7', [
|
||||||
|
@ -54,11 +54,11 @@ class FormtemplateIndexActionTest extends TestCase
|
||||||
'type' => 'TextField',
|
'type' => 'TextField',
|
||||||
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
||||||
'value' => '',
|
'value' => '',
|
||||||
|
'required' => false,
|
||||||
'nami_type' => null,
|
'nami_type' => null,
|
||||||
'for_members' => true,
|
'for_members' => true,
|
||||||
'special_type' => null,
|
'special_type' => null,
|
||||||
'hint' => '',
|
'hint' => '',
|
||||||
'required' => true,
|
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
->assertInertiaPath('data.meta.fields.8', [
|
->assertInertiaPath('data.meta.fields.8', [
|
||||||
|
@ -69,12 +69,12 @@ class FormtemplateIndexActionTest extends TestCase
|
||||||
'type' => 'TextareaField',
|
'type' => 'TextareaField',
|
||||||
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
|
||||||
'value' => '',
|
'value' => '',
|
||||||
|
'required' => false,
|
||||||
'nami_type' => null,
|
'nami_type' => null,
|
||||||
'for_members' => true,
|
'for_members' => true,
|
||||||
'special_type' => null,
|
'special_type' => null,
|
||||||
'hint' => '',
|
'hint' => '',
|
||||||
'rows' => 5,
|
'rows' => 5,
|
||||||
'required' => true,
|
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
->assertInertiaPath('data.meta.default', [
|
->assertInertiaPath('data.meta.default', [
|
||||||
|
|
Loading…
Reference in New Issue