微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Symfony 5:缺少一些必需参数“title”来生成路由“frContentStrategy”

如何解决Symfony 5:缺少一些必需参数“title”来生成路由“frContentStrategy”

我在我的控制器中创建了一个函数 (createUpdate),它创建并提交一个有效的表单(数据库修改),但是重定向给了我一个错误 缺少一些必需参数(“title”)来生成一个路由“frContentStrategy”的 URL。

我想我需要将一些参数传递给:

return $this->redirectToRoute("frContentStrategy");

因为重定向“frContentStrategy”在其路由中使用了参数转换器:

@Route("fr/strategy/content/{title}",name="frContentStrategy")

但直到现在,我都找不到让它发挥作用的方法

这是我的文件,感谢您的帮助:

控制器:

/**
 * @Route("fr/strategy/content/{title}",name="frContentStrategy")
 */
public function index(Strategy $strategy): Response
{
    return $this->render('content_strategy/contentStrategy.html.twig',[
        "strategy" => $strategy
    ]);
}

/**
 * @Route("fr/strategy/content/createforce/{title}",name="frCreateForce")
 * @Route("/fr/strategy/content/updateforce/{title}",name="frUpdateForce",methods="GET|POST")
 */
public function createUpdate(DiagnosticForce $diagnosticforce = null,Request $request,EntityManagerInterface $em)
{
    if(!$diagnosticforce){
        $diagnosticforce = new DiagnosticForce();
    }
    $form = $this->createForm(DiagnosticForceType::class,$diagnosticforce);
    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid()){
        $em->persist($diagnosticforce);
        $em->flush();
        return $this->redirectToRoute("frContentStrategy");
    }

    return $this->render('content_strategy/createForce.html.twig',[
        "diagnosticforce" => $diagnosticforce,"form" => $form->createView()
    ]);
}

表单类型:

public function buildForm(FormBuilderInterface $builder,array $options)
{
    $builder
        ->add('strenght')
        ->add('strategy',EntityType::class,[
            'class' => Strategy::class,'choice_label' => 'title'
        ])
    ;
}

contentStrategy.html.twig :

<section class="newStrat">
    <a href="{{path('frStrategy')}}">
        <div>Liste des stratégies</div>
    </a>
</section>
<section>
    <h1>{{strategy.title}}</h1>
    <a href="{{path('frCreateForce',{'title' : strategy.title}) }}">
        <div>Ajouter une force</div>
    </a>
</section>

createForce.html.twig :

{{form_start(form)}}
<div class="divForm1">
    <img class="statue" src="{{asset('img/Calque 2.png')}}" alt="image d'accueil visage statue">
    <h2>Libellé de la force</h2>
    <div class="loginForm">
        {{form_row(form.strenght)}}
    </div>
    <input type="submit" value="Valider">
</div>
{{form_end(form)}}

解决方法

我终于找到了解决方案。感谢@craigh 的帮助和指导。

为了解决这个问题,我不得不将我的方法 createUpdate() 更改为:(所有内容都在控制器文件中)

public function createUpdate(Strategy $id,DiagnosticForce $diagnosticforce = null,Request $request,EntityManagerInterface $em)

然后我在重定向中添加了一个参数:

return $this->redirectToRoute("frContentStrategy",[
            'title' => $id->getTitle()
        ]);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。