form alter form_id probléma

fgabor képe

Sziasztok!

Hook_form_alter implementációmba egy feltételt definiáltam form_id alapján:

if(strpos($form_id, 'UC_PRODUCT_ADD_TO_FORM') === 0) {
...
}

Ez a kód egyetlen formnál sem hajtja végre a kívánt kódrészletet, ha az === helyett ==-öt írok, akkor minden létező formra megcsinálja (search, login). Mit tehetek, hogy csak a fent említett forma hajtsa végre?

Drupal verzió: 
Bálint képe

Mit szeretnél?

Azokra a form-okra szeretnéd, hogy lefusson, amit írsz, amiknek az id-jában szerepel a 'UC_PRODUCT_ADD_TO_FORM' karaktersorozat?

Ebben az esetben ezt kellene írnod a feltételben:

  if(strpos($form_id, 'UC_PRODUCT_ADD_TO_FORM') !== FALSE) {
  ...
  }

Ehelyett én valami ilyesmit javasolnék, hacsak nincs nagyon sok ilyen form:

  // Felsoroljuk egy tömbben a módosítandó formok id-jait:
  $forms_to_alter = array('form_id1', 'form_id2', 'form_id3');
  // A feltételben azt vizsgáljuk, hogy ezek között szerepel-e az aktuális form id-ja:
  if (in_array($form_id, $forms_to_alter)) {
    ...
  }

De ha csak egyetlenegy form-ra szeretnéd, akkor írasd ki drupal_set_message-dzsel a $form_id-t, nézd meg, hogy mi annak a form-nak az id-ja, amit módosítani szeretnél, és a feltétel csak ennyi:

  if ($form_id == 'a_formod_id-ja') {
  ...
  }
0
0
fgabor képe

Köszi a választ, de nem müködik.

Folyamatosan ahány terméket beviszek generálódik új form, mert az übercart modul hozzányom mindig egy számot (pl.: uc-product-add-to-cart-form-60-1), tehát mindenképp az első megoldásra lenne szükségem, de sajnos kiprobáltam és a !== FALSE-al se jó.

0
0
pp képe

kb:

if(preg_match('/^UC_PRODUCT_ADD_TO_FORM/', $form_id)) {
 
}
0
0
fgabor képe

Köszi! Müködik, bár csak kisbetüvel...

üdv

0
0