symfony - 对象未找到,但在由“新”创建时工作
问题描述
它正在工作:
use AppBundle\Entity\Product;
use AppBundle\Entity\ProductPriceAccept;
public function editAction(Product $product)
{
$ppa = new ProductPriceAccept();
// further some operations on $product
}
但它不想工作:
use AppBundle\Entity\Product;
use AppBundle\Entity\ProductPriceAccept;
public function editAction(Product $product, ProductPriceAccept $ppa)
{
$ppa->setPrice();
// further some operations on $product
}
我得到:
AppBundle\Entity\ProductPriceAccept object not found.
Entity\ProductPriceAccept.php 是:
// src/AppBundle/Entity/ProductPriceAccept.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Product_Price_Accept")
*/
class ProductPriceAccept
{
// ...
}
我有点困惑,因为通常类型提示对我来说效果很好,而且你可以看到它在产品实体的类似情况下工作。第一个解决方案工作正常,但我想知道第二个是如何产生问题的。我清除了缓存,检查了错别字。不知道还有什么可以做的。
解决方案
只需读取一个参数,它就可以自动读取存储库。
不止一个,它需要一些帮助。
id 选项指定路由中的哪个占位符被传递给使用的存储库方法。如果未指定存储库方法,则默认使用 find()。
这还允许您在一个操作中拥有多个转换器:
因此,您将需要一个明确的 @ParamConverter 用于 ProductPriceAccept - 您可能还需要use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
line。
/**
* @Route("/blog/{id}/comments/{comment_id}")
* @ParamConverter("comment", class="SensioBlogBundle:Comment",
* options={"id" = "comment_id"})
*/
public function showAction(Post $post, Comment $comment)
{
}
来自:@ParamConverter。
推荐阅读
- backup - 是否可以使用 haproxy 作为 haproxy 的备份?
- sapui5 - 绑定没有模型名称的片段
- jquery - 如何使用 jquery 隐藏用于签名页面的导航栏,以便共享布局仍显示在其他文档上?
- node.js - 如何将一项 Web 服务和一项内部服务部署到 Heroku?
- r - 是否可以将属性数据写入魔法对象?
- selenium-webdriver - 为什么动态下拉抛出“javascript错误:循环引用”?
- kibana - kibana vega(公式)转换的对象导致空白页
- json - 在 JSON Schema 中使用对象键作为类型
- twitter - 无法从 twitter 获取授权令牌
- clojure - 如何使用幽灵合并两个不同的集合?