Pereiti prie turinio
← Visos PrestaShop 9 klaidos

PrestaShop 9 klaidos

Call to undefined method addJquery() PrestaShop 9 versijoje

PrestaShop 9 pašalino addJquery() iš valdiklių. Moduliai, kurie jį vis dar kviečia hook'e, sustabdo visą puslapį su fatal error, nors nuo 1.7.7 šis kvietimas nieko nedarė.

Klaida
Call to undefined method ProductController::addJquery()
Pašalinta
PrestaShop 9.0
Dažniausiai randama
Modulių antraštės hook'ai, modulių valdikliai

Kas nutiko

Senesni moduliai puslapio failus ruošia su $this->context->controller->addJquery(), dažniausiai hookDisplayHeader ar hookActionFrontControllerSetMedia, kad jQuery tikrai būtų puslapyje prieš jų skriptą.

Nuo PrestaShop 1.7.7 šis kvietimas nieko nedarė: jQuery įkeliamas visada, o metodas tik įrašydavo įspėjimą apie pasenusį kodą. PrestaShop 9.0 jį pašalino iš bazinės Controller klasės. Dabar ta pati eilutė – fatal error.

Kadangi antraštės hook'ai vykdomi kiekviename puslapyje, klaida retai lieka viename kampe: klaidą 500 rodo prekių puslapiai, krepšelis ar visa parduotuvė. Pranešime nurodoma atidaryto puslapio klasė, pavyzdžiui, ProductController::addJquery(), IndexController::addJquery() ar AdminOrdersController::addJquery().

Sprendimas

Ištrinkite kvietimą. jQuery jau yra:

// Buvo
public function hookDisplayHeader()
{
    $this->context->controller->addJquery();
    $this->context->controller->registerJavascript('mymodule', 'modules/mymodule/views/js/front.js');
}

// Dabar (veikia 1.7.7, 8 ir 9)
public function hookDisplayHeader()
{
    $this->context->controller->registerJavascript('mymodule', 'modules/mymodule/views/js/front.js', ['position' => 'bottom', 'priority' => 200]);
}

addJqueryUI() ir addJqueryPlugin() PrestaShop 9 versijoje liko, todėl eilutės, kurios įkelia jQuery UI komponentą ar kartu pateikiamą įskiepį, gali likti.

„jQuery is not defined“ šablone

Kita to paties įpročio pusė – modulio šablonas su įterptu <script>, kuris naudoja $ ar jQuery. Nuo PrestaShop 1.7 tema jQuery įkelia puslapio apačioje (Classic jį įtraukia į themes/core.js), todėl anksčiau išvestas įterptas skriptas paleidžiamas prieš jį ir sustoja su jQuery is not defined. addJquery() to niekada netaisė.

Arba perkelkite kodą į JS failą, registruotą su registerJavascript() kaip aukščiau, arba įterptame skripte palaukite, kol puslapis įsikels:

<script>
  document.addEventListener('DOMContentLoaded', function () {
    $('.mymodule-block').addClass('ready');
  });
</script>

Kur dar slepiasi

grep -rn "addJquery()" modules/ override/ themes/

Paieška su skliaustais randa tik patį addJquery(), ne addJqueryUI() ar addJqueryPlugin(). Apie 404 klaidas senuose jQuery failuose – jquery-1.11.0.min.js 404.

Raskite visas tokias vietas prieš atnaujindami

Kur yra vienas pašalintas kvietimas, paprastai yra ir daugiau. Mūsų nemokama PrestaShop 9 parengties patikra perskaito visų modulių, temos ir override failų kodą ir parodo kiekvieną problemą su failu ir eilute. Ji tik skaito, nieko nekeičia.

Gauti nemokamą patikrą

Nenorite taisyti patys? Parduotuves į PrestaShop 9 atnaujiname už fiksuotą kainą. Apie atnaujinimą