Try to select a menu from the main joomla backend.
I expect to be able to load and select the menu options.
What happens instead is an error page with a button allowing to go back to the control panel
An error has occurred.
0 Call to undefined method JModuleHelper::isAdminMultilang()
I am running PHP 7 on Nginx
URL of error page- /administrator/index.php?option=com_menus&view=items&menutype=mainmenu
I have elected to use the new url system that removes the numbers from the url but just in 'articles' component.
I just upgraded in the normal way directly writing files when prompted.
Isis the default.
Tried hathor - was same error.
Tried Bluestork and got some message that I didnt have the files or something and it looked like the defualt(as it probably switched)
OK I just wanted to rule something out - it should be fine with isis
I suspect that a file may not have uploaded correctly. Can you go to the joomla update component and try to reupload joomla from the upload and update tab
Hi Thanks.
Do you mean go to the install and try and reinstall joomla? I went to the update and found no useful way forward as everything is updated.
Can you give me a couple of steps pls.
I have also discovered the exact same error when trying to access the modules. So I go Extensions > Modules
Unfortunately it hasn't worked. I am getting the feeling like this is not a good day. Can I run some database rebuilds or something else?
I have the same issues. Reinstalled joomla core files from the back-end. Same problem. Uploaded all the core Joomla files with FTP, same problem. In Menu's as well as in moduels. The full error I get is:
Fatal error: Call to undefined method JModuleHelper::isAdminMultilang() in /home/user/domains/domeinname.nl/public_html/administrator/components/com_modules/controller.php on line 80
from what joomla version have you updated ?
This thread points to a non-successful upgrade.
JModuleHelper
is not a real class in 3.8 anymore, it is aliased to Joomla\CMS\Helper\ModuleHelper
. So the error message would reference the namespaced class if it were something to do with that.
isAdminMultilang()
is a new method in the module helper added in 3.8. The old libraries/cms/module/helper.php
file won't have that method as it was supposed to be deleted.
Sorry but not sorry to see I am not alone! I updated from the previous version 3.7.5
Ok that line is checking the missing method before to "Check custom administrator menu modules"..where should this method exist and why is it not loaded?
I've updated from 3.7.5
Status | New | ⇒ | Discussion |
Sounds like we have both (me and rachelwalraven) done again an upgrade so unsure as to what is failing in the upgrade. What can we test. Can we manually check some files?
If your libraries/cms
directory doesn't look like https://github.com/joomla/joomla-cms/tree/3.8.0/libraries/cms then the update did not run in full. A full update includes writing the new files to the filesystem, database updates, removing old files from the filesystem (a list is kept in our update script), and some minor maintenance tasks (i.e. clearing the site cache).
I have the same folder structure as on github.
So do I, I checked the files inside which had been recently changed and saw that I had the 3.8 stuff.
If the core folder structure is correct and you still have a "real" JModuleHelper
class then it seems an extension is overloading the core class and hasn't been updated with the new method added in 3.8.
Any idea what kind of extension will do that with menus as well as modules?
How can I check for this class please
If the core folder structure is correct and you still have a "real" JModuleHelper
I ran grep -nr JModuleHelper and found a lot of references to the class. I am a php integrator rather than a developer so I am getting only half of what you mean by this
"JModuleHelper is not a real class in 3.8 anymore, it is aliased to Joomla\CMS\Helper\ModuleHelper"
PHP supports a feature called class aliasing where you can create an alias of a class with a different name.
In 3.8, we migrated most of the core libraries from being in the global PHP namespace to using properly namespaced classes. As part of that migration, we created aliases for all of the moved classes so that the old name still works without breaking things. So the JModuleHelper
class is now named Joomla\CMS\Helper\ModuleHelper
but through the alias feature calls to JModuleHelper
will automatically call the Joomla\CMS\Helper\ModuleHelper
class.
As I pointed out before, error messages won't use the JModuleHelper
class name as it's not a "real" class in 3.8; it's just an alias and therefore error messages would use the Joomla\CMS\Helper\ModuleHelper
class name. The fact that you are getting an error message using the JModuleHelper
class name means that it still exists as a "real" class in your site, possibly by way of an extension overloading the core class.
Try limiting your grep to "class JModuleHelper" and see what kind of results you get. If it comes back with something, and it's not in libraries/cms
(or libraries/legacy
if for some reason when the file was moved in either 3.1 or 3.2 the old version was never deleted), odds are that is the overloaded class and you should find what extension generates it and let them know they need to release an update for 3.8 compatibility (we added a new method to the module helper class and are actively using it, the copy of the module helper class that's being found doesn't have it).
There are 3rd party extensions that are overriding class
JModuleHelper
@mbabker said
isAdminMultilang() is a new method in the module helper added in 3.8. The old libraries/cms/module/helper.php file won't have that method as it was supposed to be deleted.
if these extensions have not been updated then this can be a reason that this method is not found
I found the method inside- libraries/src/Helper/ModuleHelper.php at 636. That won't surprise you I am just going through detail.
I ran the grep (second time with "" :) ) and bingo....System - JReviews SEF One of Alejandros older files as I didn't update in some time now.
And these other instances of that...
/html/components/com_jreviews/jreviews/cms_compat/joomla/packages/plugins/system/jreviews_sef/modulehelper.php:19:abstract class JModuleHelper
./html/plugins/system/jreviews_sef/modulehelper.php:19:abstract class JModuleHelper
./html/plugins/system/t3.old/includes/joomla25/modulehelper.php:39:abstract class JModuleHelper
./html/plugins/system/t3.old/includes/joomla30/modulehelper.php:37:abstract class JModuleHelper
./html/plugins/system/t3/includes/joomla25/modulehelper.php:39:abstract class JModuleHelper
./html/plugins/system/t3/includes/joomla30/modulehelper.php:19:abstract class JModuleHelper
Thank you so much everyone- I will still stick around a bit as I am not one to say sod you jack I am ok..
Rachel are you able to run a terminal command when you are in the root of your site on the remote server that is
grep -nr "class JModuleHelper" .
Elsewhere someone reported the same? error:
Backend:
0 Call to undefined method JModuleHelper::isAdminMultilang() /home1/grantour1/public_html/administrator/components/com_menus/controller.php:34
and Frontend (in that person's case) :
Fatal error: Cannot declare class JModuleHelper, because the name is already in use in /home1/grantour1/public_html/plugins/system/t3/includes/joomla30/modulehelper.php on line 19
It's a new site with only third-party component being Layer Slider, apart from T3 template/plugin.
@landed1 I see you also have the T3 joomla30 plugin.
@rachelwalraven do you also have T3 on your website? (your error references a different line number)
I had the same issue when I tried to access Menu > Manage (or any other sub-menu) in backend.
I'm using multilanguage menus before upgarding to 3.8
Yes T3 going to be in the past,I know its free but last night I updated everything found I was updated and it still was an issue. I changed template away now Jacques to rockettheme who have a great framework IF you find a template you like I find them dark, just need a nice clean light theme and I am happy to part cash. The JReviews stuff I am going to remove I think as its not cheap and I am doing this as a hobby, across afew sites and it is too much...
For anyone using JReviews and having issues after the Joomla 3.8 update there's a patch being tested for the JReviews SEF Plugin which can be downloaded from the forum:
https://forum.jreviews.com/topic/29794-joomla-38-compatibility-update/
Having an issue with Menu Item Alias myself, only issue I seem to be having with Menu. It keeps giving me an error when i try to select an item and loads the whole menu page into the lightbox frame.
Wow long thread. Ok DV-Admin here, I posted this on the Joomla Forum.
I posted the same on Joomlart and a moderator should be looking at it. There are at least several of us with the same issue on T3. Personally I really like T3, I wouldnt mind paying for it, maybe then we could get a much better product. Here is the thread (I see it was posted before) on Joomlart https://www.joomlart.com/forums/topic/cannot-access-menu-items-after-upgrade-from-3-7-to-3-8-back-and-front-end-error
If you are using T3 - Joomlart have updated T3 plugin which restored my Menus. They additionally referenced a problem when using Fontawesome Pro. See Joomlart thread https://www.joomlart.com/forums/topic/cannot-access-menu-items-after-upgrade-from-3-7-to-3-8-back-and-front-end-error/#post-1063262
Rachel are you able to run a terminal command when you are in the root of your site on the remote server that is grep -nr "class JModuleHelper" .
Unfortunately not. I'll ask my server manager.
I know I don't use T3 stuff.
Hi
Where exactly do we run this command ? My host runs Linux.
I have access to file manager etc in the normal manner.
I have done a text search for JModuleHelper and it does not find anything ...
I presume this is a php command.....
How do I run php on a command line basis
In fact what exactly do I have to do ?
Richard
Hi
I do NOT use T3 ....
I do use Akeeba, and Admin Tools
Richard
to find out where exactly your current JModuleHelper
is, run next PHP:
$reflector = new ReflectionClass('JModuleHelper');
echo $reflector->getFileName();
Thanks,
But how do I run php on a command line basis
Richard
Hi
One clever trick to run the code ... needed a sleep() so i could see the answer !
Thanks
I did that and have one instance at X:\Joomla_Sites\wp_38_1\libraries\src\Helper
If I rename it then it crashes - so its needed ...
What to do ?
Richard
I did that and have one instance at X:\Joomla_Sites\wp_38_1\libraries\src\Helper
/libraries/src/Helper/ModuleHelper.php
(or with \
at win system) is correct path, and all should work,
maybe you have a different issue
php 7.1 and php 7.0 issue.
Upgraded from 3.7.5.
Using Akeba backup, affect normal admin template (standart version).
Any suggestion to fix this issue?
@gundestrup If issue is related to Akeeba Backup then check if you using latest version.
I am using latest Pro version 5.6.0 with latest php.
Please describe exactly the problem.
Any suggestion to fix this issue?
instead of text searching for the class
an easier way for such issue as this,
is to print the filename where this class was defined
see comment of @Fedik above
edit file
administrator/index.php
just before
// Execute the application.
$app->execute();
add (temporarily)
$class = new ReflectionClass('JModuleHelper');
echo $class->getName() . '<br/>';
echo $class->getFileName() . '<br/>';
die();
then visit
/administrator/
No software has a version called "latest"
@brianteeman In this case @gundestrup is referring to Akeeba Backup Pro 5.6.0. See me comment.
I am using latest Pro version 5.6.0 with latest php.
I was referring to the php version ;)
PHP version: 7.1.9-1
According to Akeeba Backup, it's compatiable with Joomla 3.8 (Using version 5.6.0 of Akeeba Backup)
you posted in this issue
so i am assuming that you are getting the message reported by this issue (because you have not said otherwise)
An error has occurred.
0 Call to undefined method JModuleHelper::isAdminMultilang()
can you see my previous comment ?
Visiting com modules (that give the error) I then get
Joomla\CMS\Helper\ModuleHelper
/home/svend/www-data/gundestrup.dk/public_html/libraries/src/Helper/ModuleHelper.php
Here is the contence if the file on my server
`svend@skynet2:~/www-data/gundestrup.dk/public_html/libraries/src/Helper$ cat ModuleHelper.php
Propably there are some 2nd file defining a JModuleHelper and this is loaded only in some pages
Try running this on the Joomla root folder
(by searching exactly for 'class JModuleHelper' it will be easier to get only the file causing the issue)
grep -nr 'class JModuleHelper'
I think we have a culpit
svend@skynet2:~/www-data/gundestrup.dk/public_html$ grep -nr 'class JModuleHelpe r'
plugins/system/ns_fontawesome_pro/ns_fontawesome_pro.php:86:abstract class JModuleHelper
After updating to lastest version, the ref was gone, and everything works correclt.
So to sum it it
login to server, root folder of installation run "grep -nr 'class JModuleHelper'", and see what extension you missed to upgrade... NOT a joomla error, but an error of a too lax admin (ME) sorry, thanx for the help
Such errors keep coming up when upgrading to J3.5 J3.6 J3.7 J3.8 and
Maybe a new documentation for people getting
0 Call to undefined method JSomeClassname::SomeMethod()
Asking them to
grep -nr 'class JSomeClassname'
The problem for me was the MetaMod extension (I haven't updated it yet, as I don't have a valid subscription).
I still don't know what caused it, but i've fixed it by making a fresh install. Importing my database en installing the extensions. Now all is working fine.
Howdy,
I had also received the exact same error message - my issue was JReviews, specifically the SEF plugin.
If you head over to JReviews support forum, Alejando has posted a fix.
Hope this helps someone.
Cheers.
I solved this problem quickly by turning off the fontawsome plugin.
It was solved about two weeks ago, there is a new version for that plugin.
Hi,
I too am having this problem. I added the code that @ggppdk suggested:
edit file
administrator/index.php
just before
// Execute the application.
$app->execute();
add (temporarily)
$class = new ReflectionClass('JModuleHelper');
echo $class->getName() . '
';
echo $class->getFileName() . '
';
die();
then visit
/administrator/
And this is the output when I visit Administrator:
Joomla\CMS\Helper\ModuleHelper
/home/linktosale/public_html/libraries/src/Helper/ModuleHelper.php
I am not sure what I need to do next. I have updated Akeeba backup, my template, Jreviews (applied the fix) and still no joy. Can anyone advise as to what else I can try? At the moment I cannot access any of my menus via administrator - The modules and other menus work - its just the Menu section that is broken.
@PercyP Please post on forum in https://forum.joomla.org/viewforum.php?f=710
@PercyP
Joomla\CMS\Helper\ModuleHelper
/home/linktosale/public_html/libraries/src/Helper/ModuleHelper.php
the above is correct
In your the class seems to be overriden only when you visit the menu manager
So First, navigate to the page that shows error "0 Call to undefined method JModuleHelper::isAdminMultilang()"
(aka first visit the menu manager)
Put your PHP snippet in the administrator/templates/isis/index.php
file, not the main administrator/index.php
file. With it in the latter file, the Reflection call is happening before plugins get to register their overloaded versions of core classes. By putting it in the template the request should run through and find the problematic file.
Hi @mbabker
thanks for responding. Where in that file should I put the code? It doesn't have the same lines as where @ggppdk suggested (after Execute the application ...
I tried adding it to the bottom but nothing happened, so I am guessing it needs to be placed somewhere specific?
Should there be an Isis template in the templates section? I have Beeze and Prostar - no Isis - although it is in the folder you pointed me to
You are looking in /templates
You should be looking in /administrator/templates
yes I am in administrator/templates/isis folder and added the code to the bottom of the index.php file. But nothing happened
Hi,
finally found the problem (thanks to @ggppdk @brianteeman @mbabker
It turned out to be a PayPlans plugin in my case:
/home/mysite/public_html/plugins/payplans/moduleaccess/moduleaccess/joomla/abstract/j35/module/helper.php
I renamed the folder and the menus came back :)
Thanks for your help pointing me in the right direction - most appreciated
A huge appeal to the 3PD developers, please don't replace core classes. Instead extend them and use your own class. If you are trying that to alter the core behaviour in some way be double sure of the intent. It affects YOUR customers. If affects trust on JOOMLA.
@franz-wohlkoenig Another one to close relating to upgrade issues with 3rd party extensions
Closed_By | franz-wohlkoenig | ⇒ | joomla-cms-bot |
Status | Discussion | ⇒ | Closed |
Closed_Date | 0000-00-00 00:00:00 | ⇒ | 2018-01-07 18:26:18 |
Closed_By | ⇒ | franz-wohlkoenig |
Set to "closed" on behalf of @franz-wohlkoenig by The JTracker Application at issues.joomla.org/joomla-cms/18003
closed as stated above.
Thanks for Hint @Quy.
I just finished updating my website and i'm faced with this error.
Fatal error: Call to undefined method JApplicationSite::isClient() in /home/apostlesul/public_html/plugins/system/logout/logout.php on line 48
Can someone help?
^ Maybe the advanced module manager.
0 - Call to undefined method Joomla\CMS\Helper\ModuleHelper::getModuleById() comes up in the latest JSN PageBuilder 3 (downloaded today) when I insert a module into a page.
I get that this JSN software may need updating, but how come Joomla is not backwards compatible at least in the V3 range (I am running J3.9) ?
getModuleById
is a new method added in Joomla 3.9. If JSN or someone is overloading the ModuleHelper class, as is a common thing, then other parts of the API expecting the new method to exist will break. That is not a backward compatibility issue unless you are of the belief that a class cannot have new methods introduced to it once included in a stable release.
Ok - that makes sense thanks Michael :)
Which admin template are you using?