程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Symfony @ParamConverter 仅用于活动行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_616_0@如何解决Symfony @ParamConverter 仅用于活动行? 开发过程中遇到Symfony @ParamConverter 仅用于活动行的问题如何解决?下面主要结合日常开发的经验,给出你关于Symfony @ParamConverter 仅用于活动行的解决方法建议,希望对你解决Symfony @ParamConverter 仅用于活动行有所启发或帮助;
product_show:
    path: /product/{ID}
    controller: App\Controller\ProductController::show
    methods: GET
    requirements:
      ID: \d+

<?php
declare(Strict_types=1);

namespace App\Entity;

use App\Repository\ProductRepository;
use Doctrine\ORM\MapPing as ORM;

/**
 * @ORM\Entity(repositoryClass=ProductRepository::class)
 */
class Product
{
    /**
     * @ORM\ID
     * @ORM\GeneratedValue(strategy="IDENTITY")
     * @ORM\column(type="Integer")
     */
    privatE int $ID;


    /**
     * @ORM\column(type="Boolean",options={"default": truE})
     */
    private bool $active = true;

    public function getID(): int
    {
        return $this->ID;
    }

    public function active(): bool
    {
        return $this->active;
    }
}

<?php

namespace App\Controller;

use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\httpFoundation\Response;

class ProductController extends AbstractController
{
    public function show(Product $product): Response
    {
        return $this->render('product/show.HTMl.twig',[
            'product' => $product,]);
    }
}

当 $product->active() 返回 false 时,我想发送 404 响应。

但是应该在不添加 if in controller action 的情况下完成。

也许我应该在 ParamConverter 中修改一些东西。我怎样才能做到这一点?如何覆盖 ParamConverter 行为?

@H_616_0@解决方法

您可以fetch via an Expression并在您的存储库中使用自定义函数。

例如:

class ProductController extends AbstractController
{
   /**
    * @Route("/product/{product_iD}")
    * @Entity("product",expr="repository.findOneActive(product_id)")
    */
    public function show(Product $product): Response
    {
        return $this->render('product/show.html.twig',[
            'product' => $product,]);
    }
}

在您的 ProductRepository 中:

class ProductRepository
{
    public function findOneActive($productId)
    {
        // your query here...
    }
}

大佬总结

以上是大佬教程为你收集整理的Symfony @ParamConverter 仅用于活动行全部内容,希望文章能够帮你解决Symfony @ParamConverter 仅用于活动行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。