2

私のコントローラーは:

  /**
   * @Route("/product/submit", name="product_submit") 
   * @Template("GaorenVendorsBundle:Product:index.html.twig")
   */
  public function submitAction()
  {
        $em = $this->getDoctrine()->getManager();
        $uid = $this->getUser()->getId();
        $em->getRepository( 'GaorenVendorsBundle:Product' )->updateStatus( $uid, Product::STATUS_FREE, Product::STATUS_PENDING );

        return $this->redirect( $this->generateUrl( 'product' ) );
  }

そして私のレポは:

class ProductRepository extends EntityRepository
{

  public function updateStatus($uid, $status, $setter)
  {
        $st = $this->getEntityManager()->getRepository( 'GaorenVendorsBundle:Product' )
              ->createQueryBuilder( 'p' )
              ->update( 'GaorenVendorsBundle:Product', 'p' )
              ->set( 'p.status', ':setter' )
              ->where( 'p.status= :status AND p.user= :user' )
              ->setParameters( array(
                      'user' => $uid,
                      'status' => $status,
                      'setter' => $setter
              ) )
              ->getQuery()
              ->execute()

        return $st;
  }

小枝:

    <a class="btn btn-large btn-primary " href="{{ path('product_submit') }}">
        <i class="icon-plus icon-white"></i>
        {{ 'create a new entry'|trans }}
    </a>

「送信」アクションを要求すると、次のプロンプトが表示されます。

[Semantical Error] line 0, col 75 near 'submit': Error: 'submit' is not defined.

「送信」はDoctrineORMクエリとは何の関係もありませんが、なぜエラーに表示されるのですか?

4

1 に答える 1

3

上記のようなルートに一致するルートがあるの/product/{id}でしょうか?

/product/submitこれはあなたのルートと一致$idし、文字列と考えます"submit"。最初に一致するルートがSymfonyで勝ちます。次に、このIDからProductオブジェクトを取得しようとすると、このようなエラーがスローされる可能性があります。

/product/{id}解決策は、送信アクションをルートを処理するアクションの上に移動することです。

于 2012-06-26T08:48:16.920 に答える