树枝:默认在"包含"上使用"Ignore Missing"



对于Twig,我经常使用{% include %}。我需要将ignore missing附加到每个include,因为我不想在找不到文件时遇到异常。这膨胀了很多模板代码,我正在寻找一个选项附加ignore default到所有包括默认情况下,没有重复它与每个包括调用。我正在寻找一个等效的php的包括在Twig,因为Twig自己的包括行为像php的要求。

我怎么能包括模板在树枝没有异常抛出时,没有找到一个文件,而不添加ignore missing到每一个单独的包括?
我正在寻找Twig的配置,但没有找到选项。

通过覆盖内置include
     class TokenParser_Include extends Twig_TokenParser
        {
            public function parse(Twig_Token $token)
            {
                $expr = $this->parser->getExpressionParser()->parseExpression();
                list($variables, $only, $ignoreMissing) = $this->parseArguments();
                return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing = true, $token->getLine(), $this->getTag());
            }
            protected function parseArguments()
            {
                $stream = $this->parser->getStream();
                $ignoreMissing = false;
                if ($stream->nextIf(Twig_Token::NAME_TYPE, 'ignore')) {
                    $stream->expect(Twig_Token::NAME_TYPE, 'missing');
                    $ignoreMissing = true;
                }
                $variables = null;
                if ($stream->nextIf(Twig_Token::NAME_TYPE, 'with')) {
                    $variables = $this->parser->getExpressionParser()->parseExpression();
                }
                $only = false;
                if ($stream->nextIf(Twig_Token::NAME_TYPE, 'only')) {
                    $only = true;
                }
                $stream->expect(Twig_Token::BLOCK_END_TYPE);
                return array($variables, $only, $ignoreMissing);
            }
            public function getTag()
            {
                return 'include';
            }
        }
   $twig->addTokenParser(new TokenParser_Include());

最新更新