Woops,
You've noticed that all of these are wrong:
'callback arguments' =>'mymodule_admin_settings',
They should all be:
'callback arguments' => array('mymodule_admin_settings'),
Also, remember to hit the administer menu page after each of these fixes, cause the structure is cached in the database. I noticed for example that your error message still references a function called drupal_retrieve_form which doesn't appear in your menu structure.
Dave
-----Original Message----- From: support-bounces@drupal.org [mailto:support-bounces@drupal.org] On Behalf Of Ivan Sergio Borgonovo Sent: Monday, January 28, 2008 12:03 PM To: support@drupal.org Subject: Re: [support] 404 or alias for menu hook
On Mon, 28 Jan 2008 11:24:17 -0800 "Metzler, David" metzlerd@evergreen.edu wrote:
Yes,
In drupal 4 & 5, the parent and default tab should generally have the same callback and arguments. My bet in the example that you gave in the last email is that the parent path's callback does not have a function defined that returns a form. Does that make sense?
That is admin/settings/mymodule/subsettings and admin/settings/mymodule/subsettings/action1 should look the same except for the menu type.
I know its redundant, but it's necessary.
Hopefully this makes sense, but if not, let me know what the tab user experience is you're looking for and I'll try and mock up an example.
No, it doesn't make sense or I didn't understand.
That means that in a whole hierarchy of menu all have to call the same callback and then inside the callback function differentiate the calls?
That makes the menu system useful just to build up the menu layout (sort of).
Actually in Pro Drupal Dev. there are examples where the callback is different in submenus (but none in the admin interface that I could remember of) and examples where it is the same.
Just in the MENU_DEFAULT_LOCAL_ACTION the callback of the parent is not repeated, but my parents have a callback.
And yeah I did a mistake reporting the menu...
mymodule_admin_settings3 should actually be mymodule_admin_settings2 so that the MENU_DEFAULT_LOCAL_ACTION callback is the same as the parent.
So... actually my menu looks like:
$items[] = array( 'path' => 'admin/settings/mymodule', 'callback' => 'drupal_get_form', 'callback arguments' =>'mymodule_admin_settings', 'type' => MENU_NORMAL_ITEM, ); $items[] = array( 'path' => 'admin/settings/mymodule/subsettings', 'callback' => 'drupal_get_form', 'callback arguments' =>'mymodule_admin_action1', 'type' => MENU_NORMAL_ITEM, ); $items[] = array( 'path' => 'admin/settings/mymodule/subsettings/action1', 'callback' => 'drupal_get_form', 'callback arguments' =>'mymodule_admin_action1', 'type' => MENU_DEFAULT_LOCAL_TASK,, ); $items[] = array( 'path' => 'admin/settings/mymodule/subsettings/action2', 'callback' => 'drupal_get_form', 'callback arguments' =>'mymodule_admin_action2', 'type' => MENU_LOCAL_TASK, );
Even commenting out callback and callback arguments from MENU_DEFAULT_LOCAL_TASK still doesn't solve the problem.