-1

I have the following code in PHP:

$em     = $this->getDoctrine()->getManager(); 
$entity = $em->getRepository('DataBundle:SomeData')->findAll();

foreach ($entity as $item)
{
   echo $item->getSomething();

   $data = $em->getRepository('DataBundle:SomeData')
              ->findBySomeId($item->getSomeId());

   foreach ($data as $somevar)
   {
      echo $somevar->getSomeOtherData();   
   }
}

Can it be translated in Twig? If so, I would appreciate pointers on how it can be done.

Thanks

4

2 に答える 2

1

コントローラーによって開始されたエンティティ計算をモデルで実行し、それらのオブジェクトをビューに渡してテンプレート エンジンにプッシュする必要があります。

小枝は次のようになります。

{% for item in entity %}
  {{ item.getSomething }}

  {% for somevar in data %}
     {{ somevar.getSomeOtherData }}
  {% endfor %}
{% endfor %}

編集:ここから推定できるより正確な答えは次のとおりです。

// Controller
public function demoAction()
{
    $demoModel = $this->get('demo.bundle.model.demo');
    $demoView = $this->get('demo.bundle.view.demo');
    $demoResult = $demoModel->myModelCalculation();

    return $demoView->myDemoView($demoResult);
}

//Model
public function myModelCalculation()
{
    return $this->getRepository('DataBundle:SomeData')->findAll();
}

//View
public function myDemoView($entity)
{
    return $this->getTemplatingEngine()->renderResponse('DemoBundle:demo:index.html.twig', array('entity' => $entity));
}

//Twig
{% for item in entity %}
    {{ item.getSomething }}
{% endfor %}

Symfony2 は簡単に習得できます。チュートリアルを実行し、ドキュメントを読むことをお勧めします。 http://symfony.com/doc/current/index.html

于 2012-11-15T18:47:00.520 に答える
0
//SomeData.php
// ....
class SomeData 
{
  // ...

  /**
   * @ORM\OneToMany(targetEntity="SomeData")
   */
  private $children;
}


//Controler
class SomeController
{
  /**
   * @Template()
   */
  public function someAction()
  {
    return ('entities' => $this->getDoctrine()->getRepository('DataBundle:SomeData')->findAll());
  }
}

//some.html.twig
{% for item in entities %}
   {{ item.getSomething }}

   {% for somevar in item.children %}
      {{ somevar.getSomeOtherData }}
   {% endfor %}
{% endfor %}
于 2012-11-15T19:35:03.457 に答える