2015-09-23 2 views
2

Я новичок в symfony, и я хочу использовать PHP templating engine. Ниже приведены шаги, которые я выполнил, чтобы заставить его работать.PHP шаблоны не найдены в symfony

1.Enabled PHP шаблонный движок в config.yml

templating: 
    engines: ['twig', 'php'] 

2.Defined мой путь контроллера и по умолчанию в routing.yml

hello: 
    path:  /hello/{name} 
    defaults: { _controller: AppBundle:Hello:index, name:World } 

3.Created HelloController. php

namespace AppBundle\Controller; 

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

class HelloController extends Controller 
{ 
    public function indexAction($name) 
    { 
     return $this->render('hello/name.html.php', array(
      'name'=>$name 
     )); 
    } 
} 

4.Created а вид \ приложение \ Resources \ Views \ Hello \ name.html.php

<!-- app/Resources/views/Hello/name.html.php --> 
Hello <?php echo $name ?>! 

, но когда я пытаюсь получить доступ к http://127.0.0.1:8000/hello, он показывает мне ниже ошибки

Шаблон "hello/name.html.php" не существует.

500 Внутренняя ошибка сервера - InvalidArgumentException

Я изменил имя папки шаблона с 'Hello' к 'привет', но все еще такая же ошибка. Также попытался сделать такой шаблон

return $this->render(
    'AppBundle:Hello:index.html.php', 
    array('name' => $name) 
); 

но не повезло, мне, должно быть, что-то не хватает. Может кто-нибудь, пожалуйста, направит меня в правильном направлении?

Примечание:привет/name.html.twig загружается без ошибок

Спасибо!

+0

http://symfony.com/doc/current/cookbook/templating/PHP.html эту страницу говорит, что вам нужно использовать аннотацию: /** * @Template (двигатель = "PHP ") */ Вы пытались используй это? – Grzegorz

+0

имя папки должно быть «hello» и очистить кеш после этого изменения. – malcolm

ответ

3

Если ваш шаблон в приложение/Ресурсы/просмотров/Hello/папку, вы должны использовать эти обозначения:

$response = $this->render(':Hello:name.html.php'); 

Если бы переместить его в SRC/AppBundle/Resources/Views/Hello папку, затем использовать

$response = $this->render('AppBundle:Hello:name.html.php'); 
Смежные вопросы