php - "Twig_Error_Syntax" مع الرسالة "مرشح" تم تقديم "غير معروف"




node.js symfony drupal-8 (3)

أنا أدير drupal 8 والملحن و npm لأداء المهام جولب.

عندما أقوم بتشغيل npm start .. مدير المهام الخاص بي: أحصل على تتبع المكدس التالي:

Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unknown "render" filter.' in /web/project/web/themes/emulsify/components/_patterns/04-templates/basic-page/_basic_page.twig:26
Stack trace:
#0 /web/project/web/themes/emulsify/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(481): Twig_ExpressionParser->getFilterNodeClass('render', 26)
#1 /web/project/web/themes/project_theme/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(466): Twig_ExpressionParser->parseFilterExpressionRaw(Object(Twig_Node_Expression_Name))
#2 /web/project/web/themes/project_theme/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(320): Twig_ExpressionParser->parseFilterExpression(Object(Twig_Node_Expression_Name))
#3 /web/project/web/themes/project_theme/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(212): Twig_ExpressionParser->parsePostfixExpression(Object(Twig_Node_Expression_Name))
#4 /web/project in /web/project/web/themes/project_theme/components/_patterns/04-templates/basic-page/_basic_page.twig on line 26

لقد نظرت في تثبيت غصين twig-bridge / symfony عبر الملحن ولكن لا يبدو لي للتخلص من رسالة الخطأ.

هل أنا مجرد خندق باستخدام مرشح "تقديم"؟

التحديث: 14/08/17

لقد واجهت أيضا نفس المشكلة عند محاولة استخدام وظيفة drupal_block المقدمة عبر وحدة twig_tweak دروبال 8.


Answers

لم أر هذا في سياق دروبال ، لكن مع العمل مع منصات أخرى تستخدم Twig ، لقد رأيت مشاكل مماثلة تحدث عند حدوث خطأ مبكر في عملية إعداد النظام الأساسي.

التسلسل النموذجي للأحداث هو كالتالي:

  • يبدأ النظام الأساسي بتشغيل تمهيده ؛ تحميل النواة CMS ، إلخ.
  • في مرحلة ما من هذه العملية ، يحدث خطأ.
  • ثم يحاول تقديم صفحة خطأ.
  • ومع ذلك ، تستخدم صفحة الخطأ قالب Twig.
  • عملية بدء التشغيل لم تقم بعد بتحميل جميع ملحقات twig المستخدمة في القالب.
  • Boom ، تحصل على خطأ غطائي يفيد "دالة Twig غير معروفة" بدلاً من رسالة الخطأ الحقيقية.

عندما حصلت على هذا من قبل ، ثبت أنه من الصعب للغاية تشخيص الخطأ الفعلي.

كان الحل "الصحيح" هو تعديل قوالب صفحة الخطأ بحيث تكون صغيرة ولا تستخدم أي وظائف غصين غير أساسي. ولكن إذا كنت تحصل على تحطم مبكر في عملية تحميل الصفحة ، فقد يكون من الصعب فعل ذلك.

في الحالة الأولى ، حلتها عن طريق تصحيح النظام ومحاصرة البيانات التي تم تمريرها إلى القالب. هذا أظهر لي ما الخطأ الحقيقي . حل هذا الخطأ ثم توقف خطأ twig من حدوث وسمحت لي بالدخول إلى النظام.

لا أعرف على وجه اليقين ما إذا كان ما تراه هو نفس الشيء الذي رأيته ، ولكن يبدو الأمر مشابهاً لذلك آمل أن يساعد ذلك.


المشكلة في التعليمات البرمجية المذكورة أعلاه هي أن فصول التمديد Twig الخاصة بك تمدد فئة ملحق Drupal Twig الداخلية. هذا يكسر تمديدات Twig التي أضافها قلب دروبال وهذا هو السبب في أنك تحصل على الخطأ.

لإصلاح هذا ، يجب عليك أن تجعل امتدادات Twig الخاصة بك تمتد من فئة Twig الداخلية للتمديد Twig. يجب تعريف صفك على النحو التالي:

class MyExtension extends \Twig_Extension {

بعد إجراء هذا التغيير ، يمكنك أيضًا إزالة الوسيطات المعينة لهذه الفئة من MODULE.services.yml

drupal.stackexchange.com/questions/184184/…


أعتقد أن هذا يعني أن module.exports في الوحدة النمطية ./app/routes لم يتم تعيينها لتكون وظيفة ، لذلك ، لا يتم حل require('./app/routes') ./app/routes require('./app/routes') لوظيفة ما ، لذا لا يمكنك أن تسميها وظيفة مثل هذا require('./app/routes')(app, passport) .

تبين لنا ./app/routes إذا كنت تريد منا أن نعلق أكثر على ذلك.

يجب أن يبدو شيء من هذا القبيل ؛

module.exports = function(app, passport) {
    // code here
}

أنت تقوم بتصدير وظيفة يمكن أن يطلق عليها مثل " require('./app/routes')(app, passport) .

أحد الأسباب الأخرى لحدوث خطأ مشابه هو إذا كان لديك تبعية وحدة دائرية حيث تحاول الوحدة A require(B) والوحدة B تحاول require(A) . عندما يحدث هذا ، سيتم اكتشافه بواسطة النظام الفرعي require() وسيعود أحدهم على أنه null وبالتالي فإن محاولة استدعاء ذلك لن تعمل. يتمثل الإصلاح في هذه الحالة في إزالة التبعية الدائرية ، عادةً عن طريق تقسيم الشفرة العامة إلى وحدة ثالثة يمكن لكل منهما تحميلها بشكل منفصل على الرغم من أن تفاصيل تحديد التبعية الدائرية فريدة لكل موقف.





php node.js symfony twig drupal-8