This topic is locked

Assigning a different menu dynamically in modfiyMenu event

8/5/2026 03:01:32
PHPRunner General questions
C
Chris Whitehead author

Is there a mehod to assign a menu dynamically based on a parameter?

I see I can check the menu name in modifyMenu event
if( $menu->name() == "main" ) {
// modify main menu here
}


AI did suggest assignMenu() which doesn't appear to be a function.
$menu->assignMenu("main2");
ChatGPT 8/5/2026

In PHPRunner, dynamically assigning a menu based on a parameter can be achieved using the modifyMenu event, as you've already discovered. However, there isn’t a built-in assignMenu() function. Instead, you can conditionally modify the items or structure of the menu in the modifyMenu event based on your parameters.

Here’s a general approach to achieve dynamic menu assignment:

  1. Use the modifyMenu event: This event allows you to modify the menu items programmatically.


  2. Check for a parameter: You can check for a specific parameter (like a query string, session variable, etc.) and then modify the menu accordingly.



Here is an example of how you might implement this:

// In the modifyMenu event
if ($menu->name() == "main") {
// Check for a parameter (e.g., from a GET request)
$param = $_GET['param'] ?? null; // Replace 'param' with your actual parameter name

if ($param == 'value1') {
// Modify the menu for value1
$menu->addItem("Item 1a", "link1.php", "", false); // Example of adding an item
$menu->addItem("Item 1b", "link2.php", "", false);
} elseif ($param == 'value2') {
// Modify the menu for value2
$menu->addItem("Item 2a", "link3.php", "", false);
$menu->addItem("Item 2b", "link4.php", "", false);
} else {
// Default menu items
$menu->addItem("Default Item 1", "default1.php", "", false);
$menu->addItem("Default Item 2", "default2.php", "", false);
}
}

Explanation:

  • The modifyMenu event is triggered when the menu is being built.
  • We check if the menu being modified is the "main" menu.
  • We then check for a specific parameter (in this case, using $_GET).
  • Based on the parameter's value, we add different menu items using the addItem method of the $menu object.

Note:

  • Make sure your parameter is sanitized and validated properly to prevent security issues.
  • You can also use session variables or any other method of passing parameters depending on your application's architecture.

This way, you can create a dynamic menu that adjusts based on user input or session state.