سؤال

أواجه مشكلة أثناء محاولة إلحاق ملف جافا سكريبت باستخدام headScript()->appendFile('file name') مع زند.لدي إعداد التخطيط الخاص بي مثل هذا:

    <?= $this->headScript()
    ->prependScript( 'BASE_URL = "' . $this->baseUrl() . '";' )
    ->appendFile( $this->baseUrl('js/lib/jquery/jquery-1.4.2.min.js') )
    ->appendFile( $this->baseUrl('js/admin.js') );

?>

ثم، في وحدة التحكم الخاصة بي، أحاول إلحاق ملف js إضافي لهذه الصفحة فقط، مثل:

    $this->view->headScript()->appendFile( 'another/js/file.js' );

يجب إلحاق هذا الملف بما تم إعداده بالفعل في التخطيط.ومع ذلك، تتم إضافة هذا الملف قبل ملفات "appendFile" الأخرى.لقد حاولت أيضا

$this->headScript()->offsetSetFile(999, '/js/myfuncs.js');

ولكن هذا لا يزال يضيف الملف قبل الملفات الأخرى.هذه ليست الطريقة التي أتوقع أن يعمل بها هذا الأمر، خاصة عند استخدام طريقة OffsetSetFile.كيف يمكنني اضافة هذا الملف بعد الملفات الاخرى؟شكرًا.

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

المحلول

الجواب هو استخدام headScript()->prependFile في layout.phtml و headScript()->appendFile في رأي.

نصائح أخرى

وأنا أعلم أنها إجابة متأخرة ولكن!

إذا قمت بإلغاء التلوين أو Appdentcript يستخدم الفهرس التالي المتاح. هكذا

$this->headScript()->offsetSetFile(50, 'file');
$this->headScript()->appendFile('file2');

أي ما يعادل

$this->headScript()->offsetSetFile(50, 'file');
$this->headScript()->offsetSetFile(51, 'file2');

كما أنه من المفتاح ملاحظة أن رمز وحدة التحكم يتم تنفيذه أولا قبل عرض رمز العرض / التخطيط. وبالتالي في حالتك، فإن إلحاقك تستخدم في الواقع 1000 معرف، و 1001. إصلاح سريع لهذا هو فقط لاستخدام OffsetsetTFile بشكل صريح لجميع إلحاقك. لذلك ستبدو الكود الخاص بك في تخطيطك:

<?= 
   $this->headScript()
      ->prependScript( 'BASE_URL = "' . $this->baseUrl() . '";' )
      ->offsetSetFile(500, $this->baseUrl('js/lib/jquery/jquery-1.4.2.min.js') )
      ->offsetSetFile(501, $this->baseUrl('js/admin.js') );
?>

آمل أن يساعد هذا جووجر في المستقبل

لقد لاحظت أنه إذا قمت "بإلحاق" جميع الملفات الموجودة في التخطيط مسبقًا، فيمكنني بعد ذلك استخدام appendFile في وحدة التحكم الخاصة بي وسيظهر بعدها.لسوء الحظ، لا بد لي من إدراج جميع ملفات JS الخاصة بي بترتيب عكسي في التخطيط (نظرًا لأنها ملحقة بنفسها).أرغب حقًا في الحفاظ على الأمور مرتبة وأن أكون قادرًا على الإلحاق بمكدس التخطيط الخاص بي.

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

// in your bootstrap
protected function _initHeadScript()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');

    $view->headScript()->appendFile('another/js/file.js');
}

// as a plugin
class My_Plugin_HeadScriptPlugin extends Zend_Controller_Plugin_Abstract
{
    public function routeStartup(Zend_Controller_Request_Abstract $request)
    {
        $view = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view;

        if($request->getModuleName() == 'foo')
        {
            $view->headScript()->appendFile('another/js/file.js');
        }
    }
}

في الواقع، لا تحتاج إلى الحصول على Baseurl "السبب ZF بالفعل يفعل ذلك من أجلك. عليك فقط الانتباه إلى طريقك. لا تستخدم أول مائل! خلاف ذلك سيعود ZF العنوان عن بعد.

مجرد استخدام '$this->_view->headLink()->appendStylesheet('css/main.css');'

http://zendframework.com/isues/browse/zf-3282؟focusedcommentid=23552&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-23552.

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

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