大佬教程收集整理的这篇文章主要介绍了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,请注明来意。