سؤال

بعد قراءة هذا الموضوع: كيفية إجبار المتصفح على إعادة تحميل ملفات CSS/JS المخبأة؟

أود أن أعرف ما إذا كانت هناك أي وظيفة مدمجة أو طريقة سهلة في Symfony التي تفرض إعادة التحميل تلقائيًا عن طريق إلحاق QueryString أو الطابع الزمني إلى الرابط عندما اكتشف أنه تم تعديل ملف JavaScript / CSS. (عادة ، يستخدم الناس use_javascript وظيفة لإنشاء <script> بطاقة شعار)

هل كانت مفيدة؟

المحلول

لا توجد آلية مدمجة ، ولكن القليل من الإبداع يعني أنه يمكنك القيام بذلك في أي مكان في الكود الخاص بك ، من View.yml إلى Layout.php إلى كل إجراء فردي.

طريقة View.yml سهلة بما فيه الكفاية:

التطبيقات/الواجهة الأمامية/config/view.yml:

  stylesheets:    [main?v=<?php echo time() ?>, reset?v=<?php echo time() ?>, layout?v=<?php echo time() ?>]

على الرغم من أنني أعتقد أن هذا نشط قليلاً ، وأميل إلى استخدام إما مراجعة SVN أو رقم إصدار المشروع العام:

  stylesheets:    [main?v=<?php echo sfConfig('app_project_version') ?>, reset?v=<?php echo sfConfig('app_project_version') ?>, layout?v=<?php echo sfConfig('app_project_version') ?>]

أين app_project_version تم تعيينه التطبيقات/الواجهة الأمامية/التكوين/app.yml. يجب أن تكون طرق التصميم.

<?php use_stylesheet('blah?v='.sfConfig::get('app_project_version')); ?>

نصائح أخرى

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

`

function include_versioned_stylesheets()
{
    $response = sfContext::getInstance()->getResponse();
    sfConfig::set('symfony.asset.stylesheets_included', true);
    $html = '';
    foreach ($response->getStylesheets() as $file => $options) {
        $filepath = sfConfig::get('sf_web_dir') . '/' .  stylesheet_path($file);
        if(file_exists($filepath)) {
            $file .= '?v=' . filectime($filepath);
        }
        $html .= stylesheet_tag($file, $options);
    }
    echo $html;
}

`

في تخطيطك. php اتصل بهذا داخل منطقة رأسك. تأكد من عدم وجود مكالمة أخرى لتضمين _stylesheets () ، لأن هذا هو نسخة ممتدة لها. يمكن أن يتم نفس الشيء مع inshes_javaScripts.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top