【问题标题】:Doctrine Entity from other Bundle in Symfony ControllerSymfony 控制器中其他 Bundle 中的 Doctrine 实体
【发布时间】:2016-06-29 20:56:29
【问题描述】:

我尝试在我的 Symfony 控制器中使用另一个 Bundle 的实体:

use Acme\TestBundle\Entity\Neighbour;
use AppBundle\Entity\Home;

class TestController extends Controller {

    public function testAction(Home $home, Neighbour $neighbour) { 

        //
    }
}

但这会引发 404 错误:

Acme\TestBundle\Entity\Neighbour object not found

这与像 NeighbourX 这样不存在的真实对象不同,它会引发 500 错误:

Acme\TestBundle\Entity\Neighbour does not exist

对象存在,它应该可以工作,因为它可以工作:

use Acme\TestBundle\Entity\Neighbour;
use AppBundle\Entity\Home;

class TestController extends Controller {

    public function testAction(Home $home) { 

        $thread = new ForumThread();
    }
}

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    好的,我自己已经找到了答案。我必须指定路由变量:

    /home/{id}/neighbour/{nid} #before
    /home/{id}/neighbour/{neighbour} #after
    

    但我并不完全理解它。为什么 {id} 不必是 {home}?默认情况下 {id} 只是第一个参数 id 吗?

    为什么错误信息会误导..

    【讨论】:

    • 我认为参数名称必须与路由中指定的名称相同。
    • 应该是这样,但为什么 {id} 和 $home 一起工作?顺便说一句,这就是 symfony 自动创建 CRUD 的方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多