Jump to content
  • 0

Dlaczego tablica po {addJsDef $array} jest posortowana według kluczy?


hakeryk2

Question

Witam,

Ostatnio chciałem sobie dodać do podstrony product.tpl wartości obrazków wy wygenerować sobie lepiej miniaturki, wczytać wszystkie zdjęcie przyciskiem oraz przypisać miniaturki do atrybutów jednakże zdziwiła mnie jedna rzecz. Otóż. Zmienna $images w product.tpl przypisana jest ProductController.php w protected function assignImages() i tam jest funkcja getImages, która pobiera zdjęcia sortowane po position. I w takiej kolejności ta tablica wypluta jest zarówno w końcówce funkcji jak i w product.tpl gdy z print_rujemy zmienną. 

Jednakże gdy użyję w product.tpl {addJsDef images=$images} to indeksy tej zmiennej w JS są już posortowane po kluczu czyli id_obrazka a nie po position czyli kolejność nie jest taka jak w zmiennej dostępnej w .tpl i php. Ktoś wie dlaczego?  Klucze tablicy muszą być id_image bo nie chcę definiować osobnego $images ze względu na wydajność.

Edit: Póki co ogarnąłem, że w Media.php jest funkcja 

 public static function addJsDef($js_def)
    {
        if (is_array($js_def)) {
            foreach ($js_def as $key => $js) {
                Media::$js_def[$key] = $js;
            }
        } elseif ($js_def) {
            Media::$js_def[] = $js_def;
        }
    }

i nią się bawię.

Edit 2: Poległem jednak i posortowałem to inaczej już w Javascripcie, usuwając id_image z klucza, mam go w wartościach więc jakoś sobie poradzę. A poległem ponieważ otrzymałem obiekt a nie tablicę.

 

var sorted_images = [];
$.each(images, function(k,v){
  sorted_images.push(v);
});
delete images;

Ale koniec końców efekt osiągnąłem ;) Nareszcie miniatury zdjęć przypisanych do kombinacji jeśli istnieją to są wyświetlone w wyborze atrybutu. Jeśli nie to wyświetla się domyślna grafika/kolor atrybutu. (do tego doszło więcej pracy)
image.png.70e851f48bd8c640758888a22ecf8993.png
 

Edited by hakeryk2 (see edit history)
  • Like 1
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...