Edit file File name : ActivityEditForm.php Content :<?php /* * This file is part of the Kimai time-tracking app. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace App\Form; use App\Entity\Activity; use App\Entity\Customer; use App\Form\Type\ProjectType; use App\Repository\ProjectRepository; use App\Repository\Query\ProjectFormTypeQuery; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class ActivityEditForm extends AbstractType { use EntityFormTrait; /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $project = null; $customer = null; $new = true; $isGlobal = false; if (isset($options['data'])) { /** @var Activity $entry */ $entry = $options['data']; if (null !== $entry->getProject()) { $project = $entry->getProject(); $customer = $project->getCustomer(); $options['currency'] = $customer->getCurrency(); } else { $isGlobal = null === $entry->getProject(); } $new = $entry->getId() === null; } $builder ->add('name', TextType::class, [ 'label' => 'label.name', 'attr' => [ 'autofocus' => 'autofocus' ], ]) ->add('comment', TextareaType::class, [ 'label' => 'label.description', 'required' => false, ]) ; if ($new || !$isGlobal) { $builder ->add('project', ProjectType::class, [ 'required' => false, 'query_builder' => function (ProjectRepository $repo) use ($builder, $project, $customer) { $query = new ProjectFormTypeQuery($project, $customer); $query->setUser($builder->getOption('user')); $query->setIgnoreDate(true); return $repo->getQueryBuilderForFormType($query); }, ]); } $this->addCommonFields($builder, $options); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Activity::class, 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_token_id' => 'admin_activity_edit', // @deprecated not supported since 1.15, which removed the customer select completely 'customer' => false, 'currency' => Customer::DEFAULT_CURRENCY, 'include_budget' => false, 'attr' => [ 'data-form-event' => 'kimai.activityUpdate' ], ]); } } Save