Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在symfony中从实体返回值以查看文件_Symfony - Fatal编程技术网

在symfony中从实体返回值以查看文件

在symfony中从实体返回值以查看文件,symfony,Symfony,我想将一个值从实体返回到视图文件。下面是我的实体函数 public function getVisitorName($id) { $repository = $this->getDoctrine()->getRepository('SystemVmsBundle:VisitorsDetails'); $product = $repository->findOneBy(array('id' =>$id)); $name=$product-&

我想将一个值从实体返回到视图文件。下面是我的实体函数

public function getVisitorName($id)
    {

    $repository = $this->getDoctrine()->getRepository('SystemVmsBundle:VisitorsDetails');
    $product = $repository->findOneBy(array('id' =>$id));
    $name=$product->getFirstname();
      return $name;
}
这是我的视图文件中调用该函数的行

<a href="{{ path('visitorsdetails_show', { 'id': entity.visitorId}) }}">{{ entity.visitorName(entity.visitorId) }}</a>

我正在尝试获取与访客id(在条目表中)对应的访客名称(从访客表中)。然后我将如何执行此操作?

您有两种方法:

1) 通过向EntryDetails添加字段详细信息,将SystemVmsBundle:EntryDetails实体映射到SystemVmsBundle:VisitorsDetails as OntToOne,然后在细枝模板中,通过

{{ entity.details.name }}
2) 与其创建getVisitorName(),不如使用相同的功能为此创建。

您的indexAction()并没有返回响应对象,它只是返回一个实体数组。控制器操作应该返回一个包含要显示的html的响应(除非它们用于javascript的ajax调用)。如果您使用的是细枝模板,则可以使用controller render()方法创建响应,如下所示:

        return $this->render('<YourBundle>:<YourViewsFolder>:<YourView>.html.twig', array(
            'entities' => $entities,
        ));
<a href="{{ path('visitorsdetails_show', { 'id': entity.visitorId}) }}">{{ entity.visitorsDetails.firstName }}</a>
return$this->render(':.html.twig',数组(
“实体”=>$entities,
));
当您纠正了这个错误后,我怀疑您会得到一个错误,因为$this->getDoctrine()不能在实体类中工作。getVisitorName()方法中的代码不应该在实体类中

正如@pomaxa已经提出的,我相信您的EntryDetails和VisitorsDetails实体之间应该存在一种关系,尽管我对您的问题数据了解不够,不知道应该是什么类型的关系(OneToOne/ManyToOne)。如果EntryDetails实体与VisitorsDetails有关系,则EntryDetails类将包含$VisitorsDetails属性和获取/设置该属性的方法。然后细枝文件中的行将如下所示:

        return $this->render('<YourBundle>:<YourViewsFolder>:<YourView>.html.twig', array(
            'entities' => $entities,
        ));
<a href="{{ path('visitorsdetails_show', { 'id': entity.visitorId}) }}">{{ entity.visitorsDetails.firstName }}</a>

Symfony手册中有关于的章节

另外,我希望你不介意我给你一些建议:

  • 复制和粘贴代码时要小心,就像在getVisitorName()中所做的那样。虽然系统中没有产品,但您保留了变量名“$product”。这类事情会导致bug,使代码更难维护
  • 我建议您避免在实体名称的末尾加上“详细信息”,除非您确实有两个独立且相关的实体,如Visitor+VisitorDetails以及这样做的充分理由。我认为您的示例中的实体实际上是“访问者”和“VistorEntry”
  • 除非您正在编写一个可重用的组件,否则我建议您在控制器和细枝中使用特定的变量名,如“$visitorEntries”,而不是“$entities”
    一般来说,变量名越有意义,代码的可读性、可维护性和无bug性就越高。随后,该实体上的人员也将更容易理解您的代码,并在需要时为您提供帮助。

    该实体不应包含有关存储库的代码。请发布显示页面的控制器的功能代码。您的实体是否支持容器?Oo@IgorPantović我无法获得您的qstn..可能是因为我对symfony非常陌生。:-)哪一页是空白的?条目列表?(即包含entity.visitorName链接的页面)或访问者详细信息(即单击链接时打开的页面)?所提供的控制器代码是否生成空白页?@ ReBrdDo索引页本身显示为空!谢谢你,波马萨!我试试看,然后告诉你!!