User tests: Successful: Unsuccessful:
Pull Request for Issue #12787
Summary of Changes
Issue is due to the change at root/libraries/cms/application/site.php line 355 from:
$temp = new Registry; $temp->loadString($menu->params);
to
$temp = new Registry($menu->params);
Testing Instructions
Test the menu item params override no more taking effect in com_content, etc
Documentation Changes Required
Steps to reproduce the issue
Use JApplicationSite getParams('com_mycomponent') method for a certain component in the frontend, having a valid routed menu item.
Expected result
All component params are merged with the specific menu item parameters in the same JRegistry object
If you have a menu item parameter 'myparam' and you call:
$registry = $this->app->getParams('com_mycomponent') ;
You always had:
$myParam = $registry->get('myparam');
Actual result
Menu item parameters are not merged as properties of the JRegistry object that can be obtained using the JRegistry 'get' method, but instead menu items parameters are all included in an array property named 'data'.
If you have a menu item parameter 'myparam' and you call:
$registry = $this->app->getParams('com_mycomponent') ;
You have:
$menuParameters = $registry->get('data');
$myParam = $menuParameters['myparam'];
System information (as much as possible)
Issue is due to the change at root/libraries/cms/application/site.php line 355 from:
$temp = new Registry; $temp->loadString($menu->params);
to
$temp = new Registry($menu->params);
Currently menu item params are not applied in J3.7 at all. Just test creating for example a menu item for a single article view.
Status | New | ⇒ | Pending |
Category | ⇒ | Libraries |
I confirm that using the current staging with the following code:
$params[$hash]->merge($temp);
everything is back to normal.
Closing as issue is solved elsewhere
Status | Pending | ⇒ | Closed |
Closed_Date | 0000-00-00 00:00:00 | ⇒ | 2016-11-07 07:13:52 |
Closed_By | ⇒ | Bakual |
Glad it's resolved.
If
$menu->params
is already a Registry instance, there should be no requirement at all to create another Registry instance, load a string representation of that Registry into it, THEN merge that into a Registry. While this might "fix" the issue, this doesn't seem valid to me at all. If you can't merge Registry A to Registry B without an intermediary Registry then we have major coding issues.