2015-10-09 2 views
0

Прежде чем я продолжу свой код, заранее извиняюсь. Я только начинаю изучать ветки и симфонии.Передача значений массива для цикла TWIG + symfony

Итак, у меня есть контроллер, который отображает простой html.twig. Где я застрял в синтаксисе передачи значений в цикле for. Позвольте мне показать вам, что у меня есть:

Контроллер:

namespace AppBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 

class DefaultController extends Controller 
{ 
/** 
* @Route("/", name="homepage") 
*/ 
public function indexAction(Request $request) 
{ 
    // replace this example code with whatever you need 
    return $this->render('default/mine.html.twig', array(
     'user_name' => 'trolol', 
     'one_li' => 'Learn Symfony', 
     'two_li' => 'Learn Controller', 
     'three_li' => 'Learn Twig', 
     'four_li' => 'Eat', 
     'nav' => array(
      '1':'11', 
      '2':'22' 
     ) 
    ); 
}; 
} 

Twig:

<p>Welcome <h2>{{ user_name }}</h2></p> 
    <p> To Do: 
    <br /> 
    <ul> 
     <li>{{ one_li }}</li> 
     <li>{{ two_li }}</li> 
     <li>{{ three_li }}</li> 
     <li>{{ four_li }}</li> 
    </ul> 
    <br /> 
    <ul id="nav"> 
     {% for link,text in nav %} 
      <li><a href="{{ link }}">{{ text }}</a></li> 
     {% endfor %} 
    </ul> 

Если удалить часть петли веточке и контроллер, он работает, как ожидалось. Итак, теперь я застрял в выяснении синтаксиса того, что я пытаюсь сделать. Любая помощь в том, как я выполнил бы то, что у меня не получается?

ответ

1

Вместо этого

'nav' => array(
      '1':'11', 
      '2':'22' 
     ) 

Вы должны использовать это:

'nav' => array(
      '1' => '11', 
      '2' => '22' 
     ) 

Ваш Twig код кажется, хорошо. Вы просто не можете определить массивы в PHP так, как вы это делали.

EDIT: Похоже, у вас есть опечатки. Попробуйте с кодом:

<?php 
namespace AppBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 

class DefaultController extends Controller 
{ 
    /** 
    * @Route("/", name="homepage") 
    */ 
    public function indexAction(Request $request) 
    { 
     // replace this example code with whatever you need 
     return $this->render('default/mine.html.twig', array(
      'user_name' => 'trolol', 
      'one_li' => 'Learn Symfony', 
      'two_li' => 'Learn Controller', 
      'three_li' => 'Learn Twig', 
      'four_li' => 'Eat', 
      'nav' => array('1' => '11', '2' =>'22') 
     )); 
    } 
} 
+0

Я пробовал это раньше, но я получаю CRITICAL - Fatal Parse Error: синтаксическая ошибка, неожиданный ';' в строке 25 ///, если я удалю; Я получаю сообщение об ошибке] и т. Д. – user1830833

+0

Отредактировал свой ответ. Проверьте это – viktor77

+0

О, ничего себе. Я отсутствовал, когда я закрыл). Большое спасибо. Последний вопрос, так как мы на этот счет. Если бы я хотел, чтобы пройти еще один, так что-то вроде этого

  • {{ text }} {{ third }}
  • бы быть синтаксис? 'nav' => array ( '1' => '11' => '111', '2' => '22' => '222' )) – user1830833

    Смежные вопросы