wip: filter uses form object

This commit is contained in:
2025-07-26 15:46:43 -05:00
parent 0e13b74b3b
commit 18a165fc40
5 changed files with 76 additions and 129 deletions

View File

@@ -9,16 +9,21 @@ use App\User\Database\ResolutionList;
use App\User\Dto\PreferenceOptions;
use App\User\Dto\PreferenceOptionsFactory;
use App\User\Dto\UserPreferencesFactory;
use App\User\Framework\Form\UserMediaPreferencesForm;
use App\User\Framework\Repository\PreferencesRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\Form\FormInterface;
use Symfony\UX\LiveComponent\Attribute\AsLiveComponent;
use Symfony\UX\LiveComponent\ComponentWithFormTrait;
use Symfony\UX\LiveComponent\DefaultActionTrait;
use Symfony\UX\TwigComponent\Attribute\AsTwigComponent;
#[AsLiveComponent]
final class Filter extends AbstractController
{
use DefaultActionTrait;
use ComponentWithFormTrait;
public array $preferences = [];
@@ -43,4 +48,9 @@ final class Filter extends AbstractController
{
return CodecList::asSelectOptions();
}
protected function instantiateForm(): FormInterface
{
return $this->createForm(UserMediaPreferencesForm::class, UserPreferencesFactory::createFromUser($this->getUser()));
}
}

View File

@@ -37,8 +37,16 @@ class UserMediaPreferencesForm extends AbstractType
private function addChoiceField(FormBuilderInterface $builder, string $fieldName, array $choices): void
{
$question = [
'attr' => ['class' => 'w-64 text-input mb-4'],
'label_attr' => ['class' => 'w-64 text-white block font-semibold mb-2'],
'attr' => [
'class' => 'min-w-24 text-input mb-4',
'data-result-filter-target' => $fieldName,
'data-controller' => 'symfony--ux-autocomplete--autocomplete',
'data-symfony--ux-autocomplete--autocomplete-tom-select-options-value' => '{"highlight":false}',
],
'row_attr' => [
'class' => 'filter-label'
],
'label_attr' => ['class' => 'text-white block font-semibold mb-2'],
'choices' => $this->addDefaultChoice($choices),
'required' => false,
'multiple' => true,
@@ -50,6 +58,9 @@ class UserMediaPreferencesForm extends AbstractType
{
$resolver->setDefaults([
'action' => $this->urlGenerator->generate('app_user_media_preferences_submit'),
'attr' => [
'class' => 'filter-items w-full p-4 bg-black/20 border-2 border-orange-500 text-md text-gray-500 dark:text-gray-50 rounded-lg',
]
]);
}