Use [#MapEntity()] attribute to inject entity into method + for now set controller_resolver.auto_mapping to true

This commit is contained in:
2025-05-28 14:58:59 +02:00
parent f282ffbfd4
commit 8ec18a6fb8
24 changed files with 120 additions and 117 deletions

View File

@@ -15,15 +15,14 @@ use Chill\BudgetBundle\Entity\Charge;
use Chill\BudgetBundle\Form\ChargeType;
use Chill\PersonBundle\Entity\Household\Household;
use Chill\PersonBundle\Entity\Person;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class ChargeController extends AbstractElementController
{
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/charge/{id}/delete', name: 'chill_budget_charge_delete')]
public function deleteAction(Request $request, Charge $charge): \Symfony\Component\HttpFoundation\Response
#[Route(path: '{_locale}/budget/charge/{id}/delete', name: 'chill_budget_charge_delete')]
public function deleteAction(Request $request, #[MapEntity(id: 'id')] Charge $charge): \Symfony\Component\HttpFoundation\Response
{
return $this->_delete(
$charge,
@@ -33,11 +32,8 @@ class ChargeController extends AbstractElementController
);
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/charge/{id}/edit', name: 'chill_budget_charge_edit')]
public function editAction(Request $request, Charge $charge): \Symfony\Component\HttpFoundation\Response
#[Route(path: '{_locale}/budget/charge/{id}/edit', name: 'chill_budget_charge_edit')]
public function editAction(Request $request, #[MapEntity(id: 'id')] Charge $charge): \Symfony\Component\HttpFoundation\Response
{
return $this->_edit(
$charge,
@@ -50,8 +46,8 @@ class ChargeController extends AbstractElementController
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/charge/by-person/{id}/new', name: 'chill_budget_charge_new')]
public function newAction(Request $request, Person $person)
#[Route(path: '{_locale}/budget/charge/by-person/{id}/new', name: 'chill_budget_charge_new')]
public function newAction(Request $request, #[MapEntity(id: 'id')] Person $person)
{
return $this->_new(
$person,
@@ -64,8 +60,8 @@ class ChargeController extends AbstractElementController
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/charge/by-household/{id}/new', name: 'chill_budget_charge_household_new')]
public function newHouseholdAction(Request $request, Household $household)
#[Route(path: '{_locale}/budget/charge/by-household/{id}/new', name: 'chill_budget_charge_household_new')]
public function newHouseholdAction(Request $request, #[MapEntity(id: 'id')] Household $household)
{
return $this->_new(
$household,
@@ -78,13 +74,13 @@ class ChargeController extends AbstractElementController
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/charge/{id}/view', name: 'chill_budget_charge_view')]
public function viewAction(Charge $charge)
#[Route(path: '{_locale}/budget/charge/{id}/view', name: 'chill_budget_charge_view')]
public function viewAction(#[MapEntity(id: 'id')] Charge $charge)
{
return $this->_view($charge, '@ChillBudget/Charge/view.html.twig');
}
protected function createNewElement(): \Chill\BudgetBundle\Entity\Charge
protected function createNewElement(): Charge
{
return new Charge();
}

View File

@@ -17,14 +17,16 @@ use Chill\BudgetBundle\Repository\ResourceRepository;
use Chill\BudgetBundle\Security\Authorization\BudgetElementVoter;
use Chill\PersonBundle\Entity\Household\Household;
use Chill\PersonBundle\Entity\Person;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class ElementController extends AbstractController
{
public function __construct(private readonly CalculatorManager $calculator, private readonly ResourceRepository $resourceRepository, private readonly ChargeRepository $chargeRepository) {}
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/elements/by-person/{id}', name: 'chill_budget_elements_index')]
public function indexAction(Person $person): \Symfony\Component\HttpFoundation\Response
#[Route(path: '{_locale}/budget/elements/by-person/{id}', name: 'chill_budget_elements_index')]
public function indexAction(#[MapEntity(id: 'id')] Person $person): \Symfony\Component\HttpFoundation\Response
{
$this->denyAccessUnlessGranted(BudgetElementVoter::SEE, $person);
@@ -45,8 +47,8 @@ class ElementController extends AbstractController
]);
}
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/elements/by-household/{id}', name: 'chill_budget_elements_household_index')]
public function indexHouseholdAction(Household $household): \Symfony\Component\HttpFoundation\Response
#[Route(path: '{_locale}/budget/elements/by-household/{id}', name: 'chill_budget_elements_household_index')]
public function indexHouseholdAction(#[MapEntity(id: 'id')] Household $household): \Symfony\Component\HttpFoundation\Response
{
$this->denyAccessUnlessGranted(BudgetElementVoter::SEE, $household);

View File

@@ -15,13 +15,15 @@ use Chill\BudgetBundle\Entity\Resource;
use Chill\BudgetBundle\Form\ResourceType;
use Chill\PersonBundle\Entity\Household\Household;
use Chill\PersonBundle\Entity\Person;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ResourceController extends AbstractElementController
{
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/resource/{id}/delete', name: 'chill_budget_resource_delete')]
public function deleteAction(Request $request, Resource $resource): \Symfony\Component\HttpFoundation\Response
#[Route(path: '{_locale}/budget/resource/{id}/delete', name: 'chill_budget_resource_delete')]
public function deleteAction(Request $request, #[MapEntity(id: 'id')] Resource $resource): Response
{
return $this->_delete(
$resource,
@@ -31,8 +33,8 @@ class ResourceController extends AbstractElementController
);
}
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/resource/{id}/edit', name: 'chill_budget_resource_edit')]
public function editAction(Request $request, Resource $resource): Response
#[Route(path: '{_locale}/budget/resource/{id}/edit', name: 'chill_budget_resource_edit')]
public function editAction(Request $request, #[MapEntity(id: 'id')] Resource $resource): Response
{
return $this->_edit(
$resource,
@@ -45,8 +47,8 @@ class ResourceController extends AbstractElementController
/**
* Create a new budget element for a person.
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/resource/by-person/{id}/new', name: 'chill_budget_resource_new')]
public function newAction(Request $request, Person $person): Response
#[Route(path: '{_locale}/budget/resource/by-person/{id}/new', name: 'chill_budget_resource_new')]
public function newAction(Request $request, #[MapEntity(id: 'id')] Person $person): Response
{
return $this->_new(
$person,
@@ -59,8 +61,8 @@ class ResourceController extends AbstractElementController
/**
* Create new budget element for a household.
*/
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/resource/by-household/{id}/new', name: 'chill_budget_resource_household_new')]
public function newHouseholdAction(Request $request, Household $household): Response
#[Route(path: '{_locale}/budget/resource/by-household/{id}/new', name: 'chill_budget_resource_household_new')]
public function newHouseholdAction(Request $request, #[MapEntity(id: 'id')] Household $household): Response
{
return $this->_new(
$household,
@@ -70,8 +72,8 @@ class ResourceController extends AbstractElementController
);
}
#[\Symfony\Component\Routing\Annotation\Route(path: '{_locale}/budget/resource/{id}/view', name: 'chill_budget_resource_view')]
public function viewAction(Resource $resource): Response
#[Route(path: '{_locale}/budget/resource/{id}/view', name: 'chill_budget_resource_view')]
public function viewAction(#[MapEntity(id: 'id')] Resource $resource): Response
{
return $this->_view($resource, '@ChillBudget/Resource/view.html.twig');
}