【问题标题】:Symfony3 Impossible to access an attribute ("small_pizza") on a string variable ("Margherita")Symfony3 无法访问字符串变量(“Margherita”)上的属性(“small_pizza”)
【发布时间】:2017-09-27 14:44:03
【问题描述】:

我试图显示价格,但出现错误无法访问字符串变量(“Margherita”)上的属性(“small_pizza”)。

这是我的控制器:

/**
     * @Route(
     *      "/menu",
     *      name = "pizza_menu"
     * )
     * 
     * @Template
     */
    public function menuAction() {

        $Repo = $this->getDoctrine()->getRepository('PizzaBundle:Menu');
        $rows = $Repo->findAll();

        return array(
            'rows' => $rows
        );
    }

这是我的数据库: enter image description here

在 Twig 代码中是这样的:

{% for entry in rows %}
   <tr>
      <td>{{ entry.id }}</td>
      <td>{{ entry.name }}</td>
      <td>{{ entry.components }}</td>
      <td>
          <ul>
              <li>{{ entry.name.small_pizza }}</li>
              <li>{{ entry.name.small_pizza }}</li>
              <li>{{ entry.name.small_pizza }}</li>
              <li>{{ entry.name.small_pizza }}</li>

          </ul>
      </td>
  </tr>

请帮帮我:)

【问题讨论】:

  • 那种让我饿的问题:)
  • 呵呵呵呵 :) 是的,当然 :D

标签: php symfony twig


【解决方案1】:

尝试访问导航关系的王子实体,所以试试这个:

<li>{{ entry.price.small_pizza }}</li>

而不是

<li>{{ entry.name.small_pizza }}</li>

希望有帮助

【讨论】:

  • 我按照你的方式做了,但我得到了一个错误:(属性“small_pizza”和方法之一“small_pizza()”、“getsmall_pizza()”/“issmall_pizza()”或“__call()”在“Doctrine\ORM\PersistentCollection”类中存在并具有公共访问权限。
  • @artro8 可能我错过了模式关系,所以菜单行与价格有 oneToMany 关系,所以一个披萨可以有很多价格,对吗?否则发布您的实体类(与关系)
  • 这是我的实体在此页面上
  • 我的问题是相关的。我必须习惯ManyToMany,并在“smallPizza”上的twig中更改名称。感谢Matteo抽出时间。
猜你喜欢
  • 2020-01-14
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2017-11-17
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多