【问题标题】:Attempted to call an undefined method named "getpreReady" (Twig & Symfony3)尝试调用名为“getpreReady”的未定义方法(Twig & Symfony3)
【发布时间】:2016-08-04 21:13:54
【问题描述】:

我在使用 Twig 时遇到了标题中建议的问题。确切的错误如下: Attempted to call an undefined method named "getpreReady" of class "__TwigTemplate_9583a7109672ac89ad8f73f6abf919dbeb71998598a2a1a4613d3457606a7304".

使用宏时会发生这种情况。这是我的调用模板:

{% extends 'MRPlatformBundle:Full/AbstractForm:form.html.twig' %}

{% set isSenior = (type=='logeur(se)') ? true : false %}

{%use 'MRPlatformBundle:Common/Person/addForm:addFormBlocks.html.twig'%}
{%import 'MRPlatformBundle:Common/Person/addForm:addFormMacros.html.twig' as common %}

{%block CSSexterne%}
    {{parent()}}
    {{common.CSSexterne()}}
{%endblock%}

{%block JSexterne%}
    {{parent()}}
    {{common.JSexterne()}}
{%endblock%}

{%block preReady%}
    {{parent()}}
    {{common.preReady()}}
{%endblock%}

这里是宏文件的行:

{% macro CSSexterne() %}
  <link rel='stylesheet' type='text/css' href="{{ asset('CSS-JS/TimePicki-master/css/timepicki.css') }}"/>
  <link href="{{asset('CSS-JS/jQueryFiler/css/jquery.filer.css')}}" type="text/css" rel="stylesheet" />
  <link href="{{asset('CSS-JS/jQueryFiler/css/themes/jquery.filer-dragdropbox-theme.css')}}" type="text/css" rel="stylesheet" />
  <link href="{{asset('CSS-JS/slim/slim/slim.min.css')}}" rel="stylesheet">
{% endmacro %}

{% macro JSexterne() %}
   <script src="{{asset('CSS-JS/TimePicki-master/js/timepicki.js')}}"></script>
   <script src="{{asset('CSS-JS/jQueryFiler/js/jquery.filer.min.js')}}"></script>
   <script src="{{asset('CSS-JS/slim/slim/slim.kickstart.js')}}"></script>
{% endmacro %}

{% macro preReady() %}

var placeSearch, autocomplete, target;
var componentForm = {
  street_number: 'short_name',
  route: 'long_name',
  locality: 'long_name',
  administrative_area_level_1: 'short_name',
  country: 'long_name',
  postal_code: 'short_name'
};


[...]

$(".lat").val(place.geometry.location.lat());
$(".lng").val(place.geometry.location.lng());
}
{% endmacro %}

我错过了什么?

非常感谢,提前!

【问题讨论】:

  • 我的猜测是块 preReady 没有在父模板中定义。尝试从 preReady 块中删除 {{parent()}}。有帮助吗?
  • 不幸的是它没有帮助,因为我在父模板中有一个 preReady 块。还是谢谢你:)
  • 我一直在使用另一种方法,祝你有美好的一天!

标签: php templates twig symfony


【解决方案1】:

您需要在要使用它的每个文件中导入宏文件。模板的文件是否已经在导入也没关系,还是需要手动导入。

在文件顶部添加:

{% import "your_macro_file.ext" as common %}

这样你就可以使用了:

common.CSSexterne()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多