Symfony - هل من الممكن تعطيل الناتج الذي يهرب لكل وحدة (أو لكل قالب)؟
-
24-09-2019 - |
سؤال
أحاول إخراج بعض HTML في قالب XML وطريقة هروب Symfony تعبثها. لذلك حاولت إنشاء نسخة من الإعدادات. هل هناك طريقة سهلة لتغيير إعدادات Escaping_strategy و/أو Escaping_Method لكل وحدة أو حتى لكل قالب؟
المحلول
بينما يتم تشغيل الهروب من الإخراج ، لا يزال لديك إمكانية الوصول إلى القيمة الخام من خلال $sf_data
. على سبيل المثال ، إذا تم تخزين HTML الذي تحاول الإخراج في متغير يسمى HTML في عملك:
$this->html = '<b>My HTML</b>';
يمكنك الحصول على القيمة غير المقيدة مع هذا:
<?php echo $sf_data->getRaw('html') ?>
لا أعتقد أن هناك طريقة لتعطيل هذه الوظيفة على أساس لكل وحدة.
نصائح أخرى
يعمل Getraw فقط إذا تم تمرير المتغير من الإجراء. للمتغير داخل عرض العرض
sfOutputEscaperGetterDecorator::unescape($html)
ما عليك سوى الالتحاق بهذه المشكلة اليوم وأتمكن من حلها عن طريق الإعداد sfConfig::set('sf_escaping_strategy', false)
في وحدة التحكم الخاصة بي (إما في preExecute
طريقة لجميع الإجراءات في تلك الوحدة أو في إجراء محدد - executeWhatever
).