【问题标题】:Symfony2 path to twig fileSymfony2 树枝文件的路径
【发布时间】:2014-04-10 13:48:56
【问题描述】:

我对树枝文件的路径有疑问。我想缩短路径。看我的例子:

class DefaultController extends Controller
{
    public function indexAction($name)
    {
        return $this->render('CatalogFrontendBundle:Default:index.html.twig', array('name' => $name));
    }
}

当然它会起作用,但是看看树枝文件的路径太长了。我现在可以使用像 @Template() 这样的注释,但我不想这样做。有没有其他方法可以使用默认的 twig 文件来呈现我的页面?

默认树枝文件 - 我理解为名称与操作方法名称相同的文件。因此,如果动作名称是 indexAction,则树枝文件的名称应该是 index.html.twig。

【问题讨论】:

  • 正如你所说,你不想使用@Template(),但它是为你想要的而制作的......你有什么理由想再次发明轮子吗?
  • 嘿,这是个好问题,你看这是我不做注释的想法。我读到他们很慢。我不喜欢路由注释,所以我决定不使用它。正因为如此,我喜欢找到制作类似于 @Template() 的方法
  • “我读到它们很慢”,在某些情况下。 @Template 不会拖慢你的应用速度
  • @Template 并不慢。所有用于路由、模板等的不同方法都在第一次请求时被解析为 php 缓存文件,因此除了那个请求之外没有性能差异。
  • 听起来你对 Symfony2 的哲学有异议。如果您最关心的是速度和简洁的代码,Symfony2 不是满足您需求的正确框架。 Symfony1 遵循 Ruby on Rails 的 RAD 哲学。 Symfony2 got rid of this preference toward magical conventions,主要基于像 Spring 这样的 Java 框架,这些框架支持显式和可读的代码。

标签: php symfony twig


【解决方案1】:

如果您想要更适合快速应用程序开发 (RAD) 的 Symfony 体验,请查看 KNP RAD 捆绑包。这为您提供了许多基于约定的快捷方式,包括自动模板解析。见这里:http://rad.knplabs.com/#template

【讨论】:

    【解决方案2】:

    我找不到更好的解决方案来解决我的问题。所以我决定使用@Template,马克有权将其缓存。而且我认为更好的选择是使用这些注释而不是编写我自己的方法或将所有路径放在渲染方法中。

    所以答案如下:

    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    
        class DefaultController extends Controller
        {
            /**
             * 
             * @Template()
             */
            public function indexAction($name)
            {
                return array('name' => $name);
            }
        }
    

    【讨论】:

    • 这是不正确的。如果您使用 @Template() 注释,您可以简单地返回一个数组。所以return ['name'=>$name];
    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2012-09-16
    相关资源
    最近更新 更多