【问题标题】:Method for Object does not exist?对象的方法不存在?
【发布时间】:2016-04-26 02:55:04
【问题描述】:

我是 symfony2 的新手,我正在尝试创建一个搜索功能并得到了这个

错误'对象“Matrix\MatrixEdiBundle\Entity\Edi997SegmentInError”的方法“ediTransaction”在第 58 行的 MatrixEdiBundle:Matrix:rejectedTrans.html.twig 中不存在'

这是什么问题?有人吗?

存储库

class Edi997DetailsRepository extends EntityRepository{
    public function getDetails($gsNumber, $senderId, $receiverId, $page = 1, $limit = 5 ){

    $em = $this->getEntityManager();

    $query = $em->createQuery(

        'SELECT  partial a.{id, ak301, ak401},
         partial b.{errorCode, condition},
         partial c.{edi997DetailId, errorCodeId, noOfTrans},
         partial d.{ediTransactionId, senderId, receiverId, gsNumber, isaNumber, fileName}
        FROM MatrixEdiBundle:Edi997SegmentInError a
        JOIN a.ediAk403ErrorCodes b
        JOIN a.edi997Details c
        JOIN c.ediTransaction d
        WHERE d.gsNumber LIKE :gsNumber
        AND d.senderId LIKE :senderId
        AND d.receiverId LIKE :receiverId
        AND c.errorCodeId != 1
        AND d.flag = 1')
        ->setParameter('gsNumber', "%$gsNumber%")
        ->setParameter('senderId', "%$senderId%")
        ->setParameter('receiverId', "%$receiverId%")
        ->setFirstResult(($page-1)*$limit)
        ->setMaxResults($limit);

        $paginator = new Paginator($query, $fetchJoinCollection = false );

        $paginator->setUseOutputWalkers(false);

    return $paginator;
   }
}

树枝:

{% if transaction != null %}
                        {% for trans in transaction %}
                            <tr>
                                <td style="width: 11%;">
                                  {{ render(controller('MatrixEdiBundle:Matrix:getTradingPartnerName', {'timexID' : trans.ediTransaction.receiverId, 'customerID' : trans.ediTransaction.senderId})) }}
                                </td>

                                {% 
                                   set result=render(controller('MatrixEdiBundle:Matrix:getFile', {'fileName' : trans.ediTransaction.fileName, 'senderId': trans.ediTransaction.receiverId , 'receiverId' : trans.ediTransaction.senderId }))|split('+', 4)
                                %}

                                <td style="width: 10%;">{{ result[0] }}</td>
                                <td style="width: 40%;">{{ result[3] }}<br><br>
                                    {% if trans.errorCodeId == 2 %}
                                        <span style="background-color: yellow;">Accepted but <br/>errors were <br/>noted</span><br/>
                                    {% elseif trans.errorCodeId == 3 %}
                                        <span style="background-color: yellow;">Partially<br/> Accepted</span><br/><br/>
                                            {{ trans.acceptedTrans }} Accepted,<br/>
                                            {{ trans.noOfTrans - trans.acceptedTrans }} Rejected
                                    {% else %}
                                        <span style="background-color: yellow;">Rejected</span>
                                    {% endif %}
                                    <br/>

                                    {% 
                                        set error=render(controller('MatrixEdiBundle:Matrix:getError', {'id': trans.edi997DetailId }))|split('+') 
                                    %}
                                    <span>
                                        <p style="white-space: normal;">
                                            {% if error[0] != "0" %}
                                                {{ error[0] }}{{ "%02d"|format(error[1]) }}<br/>
                                                {{ error[2] }}
                                            {% else %}
                                                Errors were not specified in 997 file
                                            {% endif %}
                                        </p>
                                    </span>
                                </td>
                                <td style="width: 10%;">{{ result[2] }}</td>
                                <td style="width: 7%;">{{ result[1] }}</td>
                                <td style="width: 5%;">{{ trans.noOfTrans }}</td>
                                <td style="width: 7%;">{{ trans.ediTransaction.receiverId }}</td>
                                <td style="width: 8%;">{{ trans.ediTransaction.senderId }}</td>
                                <td>
                                  <a href="" data-href="{{ path('matrix_edi_deleteFile', { 'id':trans.ediTransaction.ediTransactionId,'filename': trans.ediTransaction.fileName, 'url': 'matrix_edi_rejectedOutboundTrans' }) }}" data-toggle="modal" data-target="#confirm-delete"><center><i class="fa fa-trash o" style="color:#1975A3;"></i></center></a>
                                </td>
                            </tr>
                        {% endfor %}
                    {% else %}
                        <tr>
                            <td colspan="15" class="alignment result"> No Result Found </td>
                        </tr>
                    {% endif %}

【问题讨论】:

  • 给我们看一些代码,哪里出错了?
  • 我添加了存储库
  • 错误显示你在模板MatrixEdiBundle:Matrix:rejectedTrans.html.twig中调用了一个未定义的方法你能告诉我们这段代码吗?
  • @olibiaz 我添加了树枝的sn-p

标签: php sql symfony twig entity


【解决方案1】:

答案就在错误中。

在您的 Edi997SegmentInError 实体对象中,没有 ediTransaction 方法。

可能的原因:

  1. 该方法不存在于任何对象中
  2. 该方法存在于 对象,而不是您正在访问的对象

查看您的存储库方法,这似乎在您的 Edi997Details 实体中。

大概你会通过{{trans.edi997Details.ediTransaction.receiverId}} 访问它——但我真的猜到了——你必须在树枝中正确地遵循你的对象层次结构。如果您不确定您访问的是哪个对象,请尝试使用{{dump(trans)}} 查看您拥有的对象。

【讨论】:

  • 正如你所说我会通过 {{trans.edi997Details.ediTransaction}} 访问它,是否有可能因为 edi997Detials 和 ediTransaction 是两个不同的表?会不会冲突,比如' {{trans.edi997Details.ediTransaction.filename}} '
  • 这真的取决于实体之间的教义关系是如何建立的,但它应该可以正常工作 - 或者至少非常相似。
  • 我还有一个问题,我将如何访问acceptedTrans 并且它在edi997Details 下?是 trans.edi997Details.acceptedTrans 吗?
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 2012-08-31
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多