Fehler in der admin/categories.php beim Erzeugen der AdminCategoriesExtenderComponent

Thema wurde von Xantiva, 14. März 2015 erstellt.

  1. Xantiva
    Xantiva Erfahrener Benutzer
    Registriert seit:
    5. Mai 2013
    Beiträge:
    65
    Danke erhalten:
    2
    Danke vergeben:
    14
    Hallo zusammen,

    hat schon mal jemand die AdminCategoriesExtenderComponent genutzt?

    Auch in der aktuellen 2.2.0.0 sieht der Code für die Erzeugung und Initialisierung der Component in der admin/categories.php so aus:

    PHP:
    $coo_admin_categories_extender_component MainFactory::create_object('AdminCategoriesExtenderComponent');
    $coo_admin_categories_extender_component->set_data('GET'$_GET);
    $coo_admin_categories_extender_component->set_data('POST'$_POST);
    if(empty(
    $t_products_id) != false)
    {
        
    $coo_admin_categories_extender_component->set_data('products_id'$t_products_id);
    }
    if(empty(
    $t_categories_id) != false)
    {
        
    $coo_admin_categories_extender_component->set_data('categories_id'$t_categories_id);
    }
    $coo_admin_categories_extender_component->proceed();
    Ich habe mich in der SampleExtender.php schon gewundert, warum dann so auf die product_id zugegriffen wird:
    PHP:
    // products_id is always available (insert & update)
    $t_products_id $this->v_data_array['GET']['pID'];
    Denn eigentlich würde ich den Wert in $this->v_data_array['products_id'] erwarten ...

    Allerding bei genauerer Betrachtung:

    PHP:
    if ( empty($t_products_id) != false )
    {
        
    $coo_admin_categories_extender_component->set_data('products_id'$t_products_id);
    }
    Bei doppelter Negierung neigt man leicht zu Fehlern:

    Wenn in $t_products_id ein Wert drin steht, dann liefert die Funktion empty() den Wert FALSE, nur wenn die Variable leer ist, liefert die Funktion TRUE. Der Vergleich auf Ungleich FALSE führt somit dazu, dass niemals die set_dat() Methode aufgerufen wird ...

    Somit macht der Umweg im SampleExtender wieder Sinn, weil die eigentlichen Werte nie gesetzt werden ;)

    Es wäre schön, wenn das im nächsten Update gefixt wird.

    PHP:
    if(empty($t_products_id) == false)
    {
        
    $coo_admin_categories_extender_component->set_data('products_id'$t_products_id);
    }
    if(empty(
    $t_categories_id) == false)
    {
        
    $coo_admin_categories_extender_component->set_data('categories_id'$t_categories_id);
    }
    Ciao,
    Mike
     
  2. Torben Wark
    Torben Wark Gambio GmbH
    Registriert seit:
    15. Juli 2014
    Beiträge:
    2.581
    Danke erhalten:
    1.178
    Danke vergeben:
    399