modulfejlesztési bénázás

Pál úr képe

Üdv,

tudom, hogy valamit én bénázom el, de 3 napja nem jövök rá, hogy mit.

tariff.module
...

  $items['admin/content/tariff/category'] = array(
    'title' => 'Categories',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('tariff_category'),
    'acces callback' => 'user_access',
    'access arguments' => array('administer tariff'),
    'type' => MENU_LOCAL_TASK,
    'file' => 'includes/simple_tariff.admin.inc',
  );
  $items['admin/content/tariff/category/%tariff_category/delete'] = array(
    'title' => 'Delete category',
    'page callback' => 'tariff_category_delete',
    'page arguments' => array(4),
    'access callback' => 'user_access',
    'access arguments' => array('administer tariff'),
    'type' => MENU_CALLBACK,
    'file' => 'includes/tariff.admin.inc',
  );

...

inculdes/tariff.admin.inc

function tariff_category(&$form_state) {
  $form['admin'] = tariff_category_table();
  $form['#theme'] = 'tariff_category_form';
 
  return $form;
}
 
function tariff_category_delete($category) {
  return drupal_get_form('tariff_category_delete_confirm', $category);*/
}
 
function tariff_category_delete_confirm(&$form_state, $category) {
  $form['#category'] = $category;
  return confirm_form($form, t('Are you sure you want to delete the %category?', array('%category' => $category['category'])), 'admin/content/tariff/category', NULL, t('Delete'));
}

A gondom az, hogy míg az első, az admin/tariff/category oldal gyönyörűen megjelenik, addig ha rákattintok / meghívom az admin/tariff/category/xx/delete oldalt, ahol az xx egy létező elem száma, akkor újra betölti az admin/tariff oldalt. Tehát valamiért nem hívódik meg a tariff_category_delete függvény, csak nem tudom miért.

Mit rontok el?

Köszönöm,

Pál

Drupal verzió: 
hosszu.kalman képe

Első ránézésre ez hibásnak tűnik:

'page arguments' => array(4),

mert az 5. argumentumot kell átadni.

Nem tudom, hogy ez okozhat-e ilyet, de lehet a tariff_category_load() fgv lehal a feldolgozásnál emiatt.

0
0
zserno képe

Nullatol indul.

0
0
hosszu.kalman képe

Valóban, másnaposan benéztem :)

0
0
zserno képe

2 hiba igy elsore:

1) return drupal_get_form('tariff_category_delete_confirm', $category);*/ vegen a */ szintaktikailag helytelen.

2) Mivel hasznalod a %tariff_category jelolot, kellene egy tariff_category_load($category) {...} fuggvenynek is lenni, ami a megadott id-ju category-t tolti be. (Fontos, hogy ez a hook_menu()-vel egy fileban legyen.)

0
0
Pál úr képe

Köszönöm, e kettő együtt adta a kulcsot a megoldáshoz.

P

0
0
edgarpe képe

Itt vannak gondok vannak:

$items['admin/content/tariff/category/%tariff_category/delete'] =

A szövegben "admin/tariff/XX/delete"-et említesz, de itt vagy egy "content" rész is az url-ben.
Másrészt ahogy zserno is írja, a %tariff_category egy sepciális objektumot jelöl. Szerintem a hook_menu()-ben egyszerűen használj "%"-ot a "%tariff_category" helyett.

0
0