Debugowanie Magento

20.06.2014 Angelika Siczek
programista debuguje kod

programista debuguje kod

Poniżej zamieszczam krótką instrukcję przygotowaną przez jednego z naszych programistów – Pawła odnośnie tego jak debugować kod Magento, w przypadku kiedy chcemy odczytać błędy pojawiające się w sklepie internetowym lub wyciągnąć poszczególne zmienne czy też metody.

  1. Wyłączamy cache

  2. Reindexujemy wszystko

  3. Czyścimy cache przeglądarki

  4. Włączamy logi Magento:

    System > Konfiguracja > Programista(Developer)

W ustawieniach logów przełączamy na włączony. Domyślnie logi zapisywane są w ścieżce: var/log

  1. Wchodzimy w plik index.php i odkomentowujemy(lub dopisujemy) linie

    ini_set(’display_errors’, 1);

  2. Wchodzimy w plik .htaccess i przełączamy Magento w tryb developerski dopisując kod:

    SetEnv MAGE_IS_DEVELOPER_MODE „true”

  3. Zmieniamy nazwę pliku errors/local.xml.sample na errors/local.xml

  4. Dodatkowo instalujemy ‘Easy Template Path Hints’ – dodatek wyświetlający ścieżki bloków oraz widoków na frontendzie oraz backendzie.

Kiedy piszemy kod czasem zajdzie potrzeba wyświetlenia różnych zmiennych. Można to zrobić przez zwykłe wyświetlenie ich: echo($zmienna). Ta funkcja nie wyświetli nam jednak ani tablicy ani obiektu. Aby wyświetlić tablicę możemy użyć print_r($zmienna)lub var_dump($zmienna). Magento jest oparte na Zendzie, dlatego też możemy użyć fukcji zendowskiej Zend_Debug::dump($zmienna).

Żeby sprawdzić w jakiej klasie się znajdujemy przydatna wtedy jest funkcja get_class. Np. var_dump(get_class($this));

Podobnie możemy sprawdzić jakie mamy dostępne pola oraz metody klasy w której się znajdujemy: get_class_vars i get_class_methods.

Czasami może zajść potrzeba wyświetlenia sobie zmiennej na wersji produkcyjnej sklepu. Wtedy możemy opakować naszego dumpa w diva z display none:

<div style=”display: none;”><?php var_dump($zmienna) ?></div>

Inną metodą może być wyświetlenie zmiennej tylko dla naszego IP:

if ($_SERVER[‘REMOTE_ADDR’] == ‘11.11.11.11’) {

   Zend_Debug::dump($zmienna);

}

Kiedy nie możemy sobie wyrzucić dumpa na stronę (np. w niektórych kontrolerach lub przy np. mailach) możemy wrzucić go do naszego loga funkcją file_put_contents. Dodatkowo jeśli jest to array używamy funkcji var_export.

file_put_contents(Mage::getBaseDir().”/var/log/moj.log”, $zmienna);

file_put_contents(Mage::getBaseDir().”/var/log/moj.log”, var_export($array));

Cyfrowe newsy / Bądź na bieżąco

Od początku 2022 roku wchodzimy w skład Unity Group. Teraz zapisując się do naszego newslettera, będziesz na bieżąco z informacjami całej naszej organizacji.

    Wypełniając formularz wyrażasz zgodę na wysyłkę newslettera przez Unity S.A. z siedzibą we Wrocławiu. Zgodę możesz wycofać w każdej chwili. Więcej informacji na ten temat znajdziesz w naszej polityce prywatności.

    *Wymagane

    Andrzej-kurs-programowania

    Andrzej Szylar

    Chief Executive Officer

    E-mail:

    andrzej.szylar@unitygroup.com
    Magda2

    Magdalena Paczyńska-Kamienik

    HR Manager

    E-mail:

    magdalena.paczynska@unitygroup.com
    Aleksandra

    Aleksandra Bielawska-Clegg

    HR Business Partner

    E-mail:

    Michal

    Michał Duława

    New Business Developer

    E-mail:

    Katarzyna

    Katarzyna Zajchowska

    Marketing Partner

    E-mail: