ParamConverter的Symfony手册有这个例子:
/**
* @Route("/blog/{post_id}")
* @Entity("post", expr="repository.find(post_id)")
*/
public function showAction(Post $post)
{
}
但是使用@Entity注释会给我这个错误。
The annotation "@Entity" in method AppBundle\Controller\CurrencyController::currencyAction() was never imported. Did you maybe forget to add a "use" statement for this annotation?
显然,我需要使用命名空间,但是哪一个?请帮忙。
答案 0 :(得分:4)
Entity
注释仅存在于master(或futur v4)上。
Source file here
但正如您所看到的,这只是带有expr
选项的@ParamConverter注释的快捷方式,因此您必须在下一版本之前使用此注释。
最好的问候。
答案 1 :(得分:1)
您正在尝试使用ParameterConverter
,因此这种语法错误。
改为使用
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
/**
* @Route("/blog/{post_id}")
* @ParamConverter("post_id", class="VendorBundle:Post")
*/
public function showAction(Post $post)
{
}
VendorBundle:Post
应该替换为您的供应商(如果有的话)和Bundle。
答案 2 :(得分:0)
不推荐使用带有选项repository_method的注释@ParamConverter
The repository_method option of @ParamConverter is deprecated and will be removed in 6.0. Use the expr option or @Entity.
会更好
您必须添加命名空间:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;