对象未找到但在由“新”创建时工作

Posted

技术标签:

【中文标题】对象未找到但在由“新”创建时工作【英文标题】:Object not found but working when created by "new" 【发布时间】:2018-10-29 15:25:01 【问题描述】:

它正在工作:

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

   // ...

我有点困惑,因为通常类型提示对我来说效果很好,而且你可以看到它在产品实体的类似情况下也适用。第一个解决方案工作正常,但我想知道第二个是如何产生问题的。我清除了缓存,检查了错别字。不知道还能做什么。

【问题讨论】:

显示您的路由配置。看起来ParamConverter 不起作用。 路由:admin_product_edit:路径:/abcadm/product-edit/id/ 默认值: _controller: AppBundle:AdminProduct:edit 【参考方案1】:

读取单个参数,自动读取仓库。

不止一个,它需要一些帮助。

id 选项指定路由中的哪个占位符被传递到使用的存储库方法。如果未指定存储库方法,则默认使用 find()。

这还允许您在一个操作中拥有多个转换器:

因此,您将需要一个明确的 @ParamConverter 用于 ProductPriceAccept - 您可能还需要 use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; 行。

/**
 * @Route("/blog/id/comments/comment_id")
 * @ParamConverter("comment", class="SensioBlogBundle:Comment", 
 *     options="id" = "comment_id")
 */
public function showAction(Post $post, Comment $comment)


来自:@ParamConverter。

【讨论】:

好的,我明白了...所以最简单的方法似乎是 $ppa = new ProductPriceAccept();正如我在我的第一个工作代码中所写的那样。更少的代码。还是我错过了什么? 这在很大程度上取决于您使用这两个实体的目的,以及您打算从哪里获得内容,以及如何获得。

以上是关于对象未找到但在由“新”创建时工作的主要内容,如果未能解决你的问题,请参考以下文章

加载资源失败:服务器响应状态为 404(未找到)

Pyspark UDF 广播变量未定义仅在由单独脚本导入时

在创建文档时触发云功能时获取“对象可能未定义”[重复]

直接或从 Makefile 执行 Python 程序时未找到模块,但在使用“python”运行时工作正常

计时器中的graphics.DrawLine中的“System.ArgumentException参数无效”

“未找到编译器镜像中的 scala.runtime”,但在使用 -Xbootclasspath/p:scala-library.jar 启动时工作