Объект не найден, но работает, когда создан "new" - PullRequest
0 голосов
/ 19 мая 2018

Работает:

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
{
   // ...
}

Я немного запутался, потому что обычно подсказка типа работает хорошо для меня, и, как вы можете видеть, она работает в аналогичной ситуации для Product Entity.Первое решение работает хорошо, но я хочу выяснить, как второе создает проблему.Я очистил кеш, проверил опечатки.Не знаю, что может сделать больше.

1 Ответ

0 голосов
/ 19 мая 2018

С одним параметром, который нужно прочитать, он может автоматически читать репозиторий.

При наличии более одного требуется некоторая помощь.

Опция 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.

...