2015-09-16 9 views
0

Я пытаюсь получить доступ к массиву, который я прошел через $ this-render ('url', array) в шаблоне. Я следую книге Symfony, где у меня есть этот пример, я просто не могу заставить его работать.параметр доступа, переданный symfony 2.7 на шаблоне

Мой контроллер

namespace AppBundle\Controller; 

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

class LuckyController extends Controller{ 

/** 
* @Route("lucky/number/{count}") 
*/ 
public function numberActionTemplate($count){ 
    $numbers = array(); 

    for($i = 0; $i < $count; $i++){ 
     $numbers[] = rand(0, 100); 
    } 

    $results = implode(',', $numbers); 

    $numbers = array(0=>'b', 1=>'a', 2=>'c'); 

    return $this->render('lucky/number.html.php', array('luckyNumberList' => $numbers)); 
} 

Мой шаблон

<html> 
<head> 
<h1>Testing</h1> 
</head> 
<body> 
<ul> 
    <li> 
     <?php $luckyNumberList[0] ?> 
    </li> 
</ul> 
</body> 
</html> 

На данный момент им не уверен, что я делаю неправильно. Основной опыт php и начался с symfony несколько дней назад.

+0

Please поделитесь ссылкой на источник этого кода. Используете ли вы Twig с поддержкой PHP? В конфигурации Symfony по умолчанию PHP отключен в шаблонах Twig. –

+0

@ A.L Я запускаю его на своем локальном компьютере. Спасибо, что указали, что он по умолчанию отключен –

ответ

1

Symfony использует шаблоны Twig, в то время как вы пытаетесь использовать шаблоны PHP.

Обычный способ написать это:

<li> 
    {{ luckyNumberList[0] }} 
</li>  

Вы можете посмотреть на ссылки Twig:

http://symfony.com/en/doc/current/book/templating.html

+0

Спасибо Dric512. Я использовал шаблон PHP, после того, как переключил его в файл twig, я смог получить доступ к массиву. –

1

Какой код вы использовали? Я искал class LuckyController и нашел этот код из official documentation:

{# app/Resources/views/lucky/number.html.twig #} 
{% extends 'base.html.twig' %} 

{% block body %} 
    <h1>Lucky Numbers: {{ luckyNumberList }}</h1> 
{% endblock %} 

Важно отметить, что нет PHP в этом шаблоне Twig.

Если вы хотите отобразить одно значение из РНР таблицы, вы можете access to any item from the array with Twig:

… 
<h1>Lucky Numbers: {{ luckyNumberList[0] }}</h1> 
… 
+0

Благодарим вас за отзыв. Я сделал ошибку, думая, что могу получить доступ к ней с помощью php aswel. –

+1

@ Honto756K это возможно с небольшой конфигурацией, см. Ответ малькольма. –

1

Похоже, вы не забыли использовать echo, ничего серьезного:

<?php echo $luckyNumberList[0] ?> 

Я полагаю, что вы включили php Шаблонный двигатель в конфигурации:

# app/config/config.yml 
framework: 
    # ... 
    templating: 
     engines: ['php', 'twig'] 
+0

Это легко активировать PHP в Twig? Я думал, что это сложнее. –

+0

Спасибо, малькольм за то, что помог мне на этом аскете. –

+1

@ A.L Я никогда не использовал его, но выглядит так просто http://symfony.com/doc/current/cookbook/templating/PHP.html – malcolm