2016-04-26 71 views
0

我是新來的Symfony2我試圖創建一個搜索功能,得到了這個對象的方法不存在?

錯誤「方法‘ediTransaction’爲對象的‘黑客帝國\ MatrixEdiBundle \實體\ Edi997SegmentInError’不存在MatrixEdiBundle:矩陣:第58行'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 %} 
+0

向我們展示一些代碼,其中的錯誤是拋出? – olibiaz

+0

我加了存儲庫 – geekInThePink

+0

錯誤顯示你在模板'MatrixEdiBundle:Matrix:rejectedTrans.html.twig'中調用了一個未定義的方法,你能告訴我們這個代碼嗎? – olibiaz

回答

1

答案是錯誤。

在您的Edi997SegmentInError實體對象中,沒有ediTransaction方法。

可能原因:

  1. 的方法不以任何物體
  2. 的方法在 對象存在的存在,只是沒有一個你所訪問

看着你存儲庫方法,似乎在您的Edi997Details實體中。

大概你可以通過{{trans.edi997Details.ediTransaction.receiverId}}來訪問它 - 但我真的在那裏猜測 - 你必須在樹枝中正確地跟蹤你的對象層次結構。如果您不確定您訪問的是哪個對象,請嘗試使用{{dump(trans)}}來查看您擁有的內容。

+0

,正如你所說我會通過{{trans.edi997Details.ediTransaction}}訪問它,這是否可能,因爲edi997Detials和ediTransaction是兩個不同的表?它會不會發生衝突,就像'{{trans.edi997Details.ediTransaction.filename}}' – geekInThePink

+0

這實際上取決於如何在實體之間建立學說關係,但它應該可以正常工作 - 或者至少是非常相似的東西。 – Richard

+0

它確實工作謝謝! :) – geekInThePink