php - Sylius - define different form type for resource

It's possible in Sylius to define a different resource form type for a specific route?
Here I'm defining a specific formApp\Form\DishShop\AccountCartType
for this route:
routes.yaml
app_account_edit_dish_selection:
path: /dish-selection/edit/{tokenValue}
methods: [GET, POST, PUT]
defaults:
_controller: sylius.controller.order:updateAction
_sylius:
template: 'shop/index.html.twig'
form:
type: App\Form\DishShop\AccountCartType
options:
product: "expr:service('app.service.subscription_provider').getProduct()"
repository:
method: findOneBy
arguments: [tokenValue: $tokenValue]
state_machine:
graph: sylius_order_checkout
transition: edit
redirect: app_account_next_deliveries
event: dish_selection_changed
App\Form\DishShop\AccountCartType
namespace App\Form\DishShop;
use App\EventSubscriber\Account\DishStockReservationUpdater;
use App\Service\Dish\DishStockReservationProvider;
use App\Validator\Constraints\NumberOfSelectedDishesIsCoherentWithPlan;
use Sylius\Bundle\ResourceBundle\Form\Type\AbstractResourceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
final class AccountCartType extends AbstractResourceType
{
private DishStockReservationProvider $dishStockReservationProvider;
public function __construct(
DishStockReservationProvider $dishStockReservationProvider,
string $dataClass,
array $validationGroups = []
) {
parent::__construct($dataClass, $validationGroups);
$this->dishStockReservationProvider = $dishStockReservationProvider;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('subscriptionItem', PlanSelectionType::class, [
'product' => $options['product'],
])
->add('dishSelection', DishSelectionType::class, [
'constraints' => [
new NumberOfSelectedDishesIsCoherentWithPlan(),
],
])
->addEventSubscriber(new DishStockReservationUpdater($this->dishStockReservationProvider));
}
public function configureOptions(OptionsResolver $resolver): void
{
parent::configureOptions($resolver);
$resolver->setRequired('product');
}
}
services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
app.form.dish_shop.account_cart_type:
class: App\Form\DishShop\AccountCartType
arguments:
$dataClass: '%sylius.model.order.class%'
$validationGroups: '%sylius.form.type.cart.validation_groups%'
tags:
- { name: form.type }
But when I submit the form I receive this error:
Cannot check if an unsubmitted form is valid. Call Form::isSubmitted() before Form::isValid().
So, there is a way to tell Sylius that for only this specific route you should use this form type?
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: mysqli::real_connect(): (hy000/2002): connection refused
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.