Я хочу использовать этот идентификатор маршрута для вставки в мою форму значений @Route("/offrerecla/recl/{id}"

/**
 * @Route("/offrerecla/recl/{id}", name="reclamation_new", methods={"GET", "POST"})
 */
public function nerjj(Request $request, ReclamationRepository $reclamationRepository): Response
{

    $reclamation = new Reclamation();

    $form = $this->createForm(ReclamationType::class, $reclamation);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
    $reclamationRepository->add($reclamation);
        return $this->redirectToRoute('reclamations_moi', [], Response::HTTP_SEE_OTHER);
    }

    return $this->render('home/reclamer_off.html.twig', [
        'reclamation' => $reclamation,
        'form' => $form->createView(),

    ]);

введите описание изображения здесь

<tr> <td>{{ form_label(form.offreareclamer,"Предложить рекламодатель") }}</td> <td>{{ form_widget(form.offreareclamer ) }}</td> <td><span style= "color:red">{{ form_errors(form.offreareclamer) }}</span></td> </tr>

Ahmed Rjeb 23.04.2022 04:12

#@Route("/offrerecla/recl/{id}" я хочу использовать значение id для этой формы, см. фотографию, опубликованную для получения дополнительной информации {{ form_widget(form.offreareclamer) }} надеюсь, вы понимаете мою проблему, извините, я не очень хорошо говорит по-английски и спасибо

Ahmed Rjeb 23.04.2022 04:40

Не могли бы вы показать свой класс ReclamationType?

Marleen 23.04.2022 12:52

@Marleen, это мой класс ReclamationType ...

Ahmed Rjeb 23.04.2022 13:51
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
2
4
56
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

 <?php

namespace App\Form;

use App\Entity\Offre;
use App\Entity\Reclamation;
use App\Entity\User;
use DateTime;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;


class ReclamationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): 
void
{
    $builder
        ->add('typereclamation')
        ->add('datereclamation',DateType::class, array(
            'widget' => 'single_text',
            'format' => 'yyyy-MM-dd',
            'data' => new \DateTime("today")
        ))
        ->add('descriptionrecla',TextareaType::class)
        ->add('comuniquer',TextareaType::class)
        ->add('etat',ChoiceType::class, [
            'choices'  => [
                'Rien' => 'Rien',
                'En cours' => 'En cours',
                'Traiter' => 'Traiter',
                'Non Traiter' => 'Non Traiter',
            ],
        ])
        ->add('cinreclameur',EntityType::class, [
            'class' => User::class,
            'choice_label' => 'cin',
        ])

        ->add('offreareclamer',EntityType::class, [
            'class' => Offre::class,
            'choice_label' => 'idoffre',
        ])

    ;
  }

   public function configureOptions(OptionsResolver $resolver): void
  {
    $resolver->setDefaults([
        'data_class' => Reclamation::class,
    ]);
}
 }

Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 23.04.2022 18:28
Ответ принят как подходящий

Если я правильно понимаю, вы хотите показать id из URL-адреса в поле offreareclamer вашей формы. Ваша форма привязана к классу Reclamation, а поле offreareclamer привязано к классу Offre.

Если вы извлечете объект Offre с id из URL-адреса и установите его в пустой класс Reclamation, который вы передаете в форму, он должен показать правильный идентификатор в форме:

/**
 * @Route("/offrerecla/recl/{id}", name="reclamation_new", methods={"GET", "POST"})
 */
public function nerjj(Request $request, ReclamationRepository $reclamationRepository, Offre $offre): Response
{

    $reclamation = new Reclamation();
    $reclamation->setOffre($offre);

    $form = $this->createForm(ReclamationType::class, $reclamation);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
    $reclamationRepository->add($reclamation);
        return $this->redirectToRoute('reclamations_moi', [], Response::HTTP_SEE_OTHER);
    }

    return $this->render('home/reclamer_off.html.twig', [
        'reclamation' => $reclamation,
        'form' => $form->createView(),

    ]);

Преобразование сущностей {id} в Offre выполняется с помощью SensioFrameworkExtraBundle, вам может потребоваться установить его, если вы его еще не установили: https://symfony.com/bundles/SensioFrameworkExtraBundle/current/index.html

Или вы можете получить объект Offre вручную:

/**
 * @Route("/offrerecla/recl/{id}", name="reclamation_new", methods={"GET", "POST"})
 */
public function nerjj(Request $request, ReclamationRepository $reclamationRepository, OffreRepository $offreRepository, $id): Response
{
    $offre = $offreRepository->findOneBy(['id' => $id]);

    $reclamation = new Reclamation();
    $reclamation->setOffre($offre);

    $form = $this->createForm(ReclamationType::class, $reclamation);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
    $reclamationRepository->add($reclamation);
        return $this->redirectToRoute('reclamations_moi', [], Response::HTTP_SEE_OTHER);
    }

    return $this->render('home/reclamer_off.html.twig', [
        'reclamation' => $reclamation,
        'form' => $form->createView(),
/**
  * @Route("/offrerecla/recl/{id}", name="reclamation_new", methods={"GET", 
"POST"})
 */
public function nerjj(Request $request, ReclamationRepository 
$reclamationRepository, OffreRepository $offreRepository, $id): Response
{

    $offre = $offreRepository->findOneBy(['idoffre' => $id]);

    $reclamation = new Reclamation();
    $reclamation->setOffreareclamer($offre);
    $form = $this->createForm(ReclamationType::class, $reclamation);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
    $reclamationRepository->add($reclamation);
        return $this->redirectToRoute('reclamations_moi', [], 
  Response::HTTP_SEE_OTHER);
    }

    return $this->render('home/reclamer_off.html.twig', [
        'reclamation' => $reclamation,
        'form' => $form->createView(),

    ]);
   }

Другие вопросы по теме