Symfony控制器教程错误
我将按照演练学习如何使用Symfony(),但在完成“路由参数”部分并转到Symfony控制器教程错误,symfony,twig,Symfony,Twig,我将按照演练学习如何使用Symfony(),但在完成“路由参数”部分并转到localhost/hello/fabien后,我收到: “404未找到此服务器上未找到请求的URL/hello/fabien。” 但是,我看不出我做错了什么-下面是我的代码: config.yml # ... framework: templating: {engines: ['twig','php']} DefaultController: <?php namespace Ap
localhost/hello/fabien
后,我收到:
“404未找到此服务器上未找到请求的URL/hello/fabien。”
但是,我看不出我做错了什么-下面是我的代码:
config.yml
# ...
framework:
templating:
{engines: ['twig','php']}
DefaultController:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
/** return new Response('Welcome to Symfony!');*/
return $this->render('default/index.html.twig');
}
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('default/hello.html.twig', array(
'name' => $name
));
}
}
错误消息是不言自明的。代码应如下所示:
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('AppBundle:default:hello.html.twig', array(
'name' => $name
));
}
或使用注释进行简化:
/**
* @Route("/hello/{name}", name="hello")
* @Template()
*/
public function helloAction($name)
{
return array(
'name' => $name
);
}
在我的例子中,我刚刚删除了{%extends'mybase.html.twig%},并运行它开始工作的代码,然后我再次将它放在同一个位置,它正在工作。可能是缓存问题。所以我要求你们也清除缓存
谢谢
Rikkin你能运行这个php应用程序/控制台路由器:debug
并告诉我们是否显示路由吗?你是否已将此url重定向到symfony项目/环境名称的url?如果不是,那么正确的url是/localhost/prj_dev.php/hello/fabienprj'应该是您的项目名称。开发部分用于开发环境。禁止在生产中使用它。不,它在所有情况下都是app_dev.php
。感谢所有提示-如何将url重定向到我的symfony项目/环境名称?与此同时,app_dev.php/hello/fabien
让我更进一步,因为我现在收到一条错误消息(!):CRITICAL-Uncaught php异常InvalidArgumentException:“模板名”default/hello.html.twig“无效(格式为“bundle:section:Template.format.engine”)。”在/home/zac/Test/app/cache/dev/classes.php第734行
。谢谢@Udan,第二行不起作用,但我想这是因为我遗漏了一些东西-我在想你的第一段代码,但这意味着教程错了?我现在得到的错误是:CRITICAL-Uncaught PHP异常InvalidArgumentException:“找不到模板”AppBundle:default:hello.html.twig“。位于/home/zac/Test/vendor/symfony/symfony/src/symfony/Bridge/twig/TwigEngine.PHP第128行
。但是我的hello.html.twig位于/app/Resources/views/default
下,这就是问题所在@Template()注释在参考资料/views/.html.twigI下查找当前捆绑包中的模板。我们现在可以使用它了-谢谢大家的帮助。我不确定最终的问题是什么,但我与问题中的原始代码唯一明显的区别是将config.yml更新为模板化:引擎:['twig']
/**
* @Route("/hello/{name}", name="hello")
*/
public function helloAction($name)
{
return $this->render('AppBundle:default:hello.html.twig', array(
'name' => $name
));
}
/**
* @Route("/hello/{name}", name="hello")
* @Template()
*/
public function helloAction($name)
{
return array(
'name' => $name
);
}