我有一个文件夹ProjectFolder
,其中包含子文件夹Mobile
和模板indexMobile.html.twig
。
AppBundle
| Resources
| views
| ProjectFolder
| Mobile
- indexMobile.html.twig
| someView.html.twig
| someView.html.twig
| someView.html.twig
在我的控制器中,我尝试使用@Template doc和@route doc
进行各种推荐访问但是我的不同方法找不到我已创建的模板,它一直要求我直接在views
创建模板而不是Mobile
子文件夹。
class ProjectFolderController extends Controller
/**
* @Route("@Mobile/indexMobile")
* @Method({"GET", "POST"})
* @Template
*/
public function indexMobileAction()
{
return[];
}
-
class ProjectFolderController extends Controller
/**
* @Route("/Mobile/indexMobile")
* @Method({"GET", "POST"})
* @Template
*/
public function indexMobileAction()
{
return[];
}
-
class ProjectFolderController extends Controller
/**
* @Route("Mobile", name="indexMobile")
* @Method({"GET", "POST"})
* @Template
*/
public function indexMobileAction()
{
return[];
}
实际上这有效,但这不是我应该使用的方式:
class ProjectFolderController extends Controller
/**
* @Route("/mobile/index")
* @Method({"GET", "POST"})
* @Template("@ProjectFolder/Mobile/index.html.twig")
*/
public function indexMobileAction()
{
return[];
}
修改
经过一些尝试,我发现了这个:
class ProjectFolderController extends Controller
/**
* @Route("@ProjectFolder/Mobile", name="/mobile/index")
* @Method({"GET", "POST"})
* @Template
*/
public function indexMobileAction()
{
return[];
}
但是我收到了这个错误:No route found for "GET/mobile/index"
答案 0 :(得分:2)
您在此示例中提供了正确的解决方案:
class ProjectFolderController extends Controller
{
/**
* @Route("/mobile/index")
* @Method({"GET", "POST"})
* @Template("@ProjectFolder/Mobile/index.html.twig")
*/
public function indexMobileAction()
{
return[];
}
}
默认情况下@Template
用于查找模板的逻辑不支持子目录。这就是您必须将模板路径作为@Template
的参数传递的原因。
使用Twig命名空间应该很容易。示例:@Template("@App/Mobile/index.html.twig")
发现src/AppBundle/Resources/views/index.html.twig
和@Template("mobile/index.html.twig")
会在Symfony 4中找到app/Resources/views/mobile/index.html.twig
(以及templates/mobile/index.html.twig
。)
答案 1 :(得分:0)
你在这里缺少的是,像这样使用@Template默认使用它来搜索它:
“AppBundle:NAME(Controller):indexMobile.html.twig”
因此,此文件夹层次结构将起作用:
AppBundle
| Resources
| views
| Mobile
- indexMobile.html.twig
像这样使用MobileController:
class MobileController extends Controller
{
/**
* @Route("Mobile/indexMobile")
* @Template
*/
public function indexMobileAction()
{
return [];
}
}