- Berichten: 107
- Ontvangen bedankjes 10
Upgrade your extension from Joomla 3.9 to Joomla 4
- Support Team
-
Onderwerp Auteur
- Offline
- Moderator
-
Minder
Meer
3 jaren 11 maanden geleden - 3 jaren 11 maanden geleden #2169
door Support Team
Upgrade your extension from Joomla 3.9 to Joomla 4 werd gestart door Support Team
Documentation and tips
First of all, here are some publications concerning the extension migration from J3 to J4:
docs.joomla.org/Planning_for_Mini-Migrat...mla_3.10.x_to_4.x/en
docs.joomla.org/Potential_backward_compa...ssues_in_Joomla_4/en
docs.joomla.org/Potential_backward_compa...y_issues_in_Joomla_4
developer.joomla.org/news/764-joomla-3-10-and-joomla-4-0.html
JApplication
isAdmin () deprecated 4.0 Use isClient ('administrator') instead.
Replace
by
JError
To replace
JError :: raiseWarning ('',
through
JFactory :: getApplication () -> enqueueMessage (
and add 'WARNING' as the last parameter.
JDispatcher
Deprecated class placeholder. You should use JEventDispatcher instead
The CMS 'Event classes will be replaced with the `joomla / event` package
Currently (example):
Remove
replace
by
JRegistry
JRegistry :: getInstance: if the object is to pass the information from the model to the view, retrieve the information in another way (getItem and getState for example)
JViewLegacy
Replace
and
by:
JDataBase
To replace :
through
Idem it is necessary to replace the $ db-> getErrorNum () and the $ db-> getErrorMsg () by an exception handling as above.
For example, replace:
$ db-> setQuery ($ query);
$ results = $ db-> loadObjectList ();
if ($ db-> getErrorNum ()) {
JFactory :: getApplication () -> enqueueMessage ($ db-> getErrorMsg (), 'WARNING');
return false;
}
through
$ db-> setQuery ($ query);
try {
$ results = $ db-> loadObjectList ();
} catch (Exception $ e) {
JFactory :: getApplication () -> enqueueMessage (JText :: sprintf ('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $ e-> getCode (), $ e-> getMessage ()), 'ERROR');
return false;
}
JHtml
replace JHtml :: _ ('behavior.formvalidation');
by JHtml :: _ ('behavior.formvalidator');
JHtml :: _ ('behavior.tooltip'); // no longer exists
JForm
Use renderField () instead of getControlGroup
Use renderFieldset () instead of getControlGroups
Example :
Look for: form-> getControlGroup (
and replace with form-> renderField (
To install
Replace $ parent-> get ('manifest') -> version
by $ parent-> getManifest () -> version
First of all, here are some publications concerning the extension migration from J3 to J4:
docs.joomla.org/Planning_for_Mini-Migrat...mla_3.10.x_to_4.x/en
docs.joomla.org/Potential_backward_compa...ssues_in_Joomla_4/en
docs.joomla.org/Potential_backward_compa...y_issues_in_Joomla_4
developer.joomla.org/news/764-joomla-3-10-and-joomla-4-0.html
JApplication
isAdmin () deprecated 4.0 Use isClient ('administrator') instead.
Replace
Code:
JFactory :: getApplication () -> isAdmin ()
Code:
JFactory :: getApplication () -> isClient ('administrator')
JError
To replace
JError :: raiseWarning ('',
through
JFactory :: getApplication () -> enqueueMessage (
and add 'WARNING' as the last parameter.
JDispatcher
Deprecated class placeholder. You should use JEventDispatcher instead
The CMS 'Event classes will be replaced with the `joomla / event` package
Currently (example):
Code:
$ dispatcher = JDispatcher :: getInstance ();
$ result = $ dispatcher-> trigger ('onContentBeforeSave', array ($ this -> _ context, & $ table, $ isNew, $ data));
Remove
Code:
$ dispatcher = JDispatcher :: getInstance ();
replace
Code:
$ result = $ dispatcher-> trigger ('onContentBeforeSave', array ($ this -> _ context, & $ table, $ isNew, $ data));
by
Code:
$ result = Factory :: getApplication () -> triggerEvent ('onContentBeforeSave', array ($ this -> _ context, & $ table, $ isNew, $ data));
JRegistry
JRegistry :: getInstance: if the object is to pass the information from the model to the view, retrieve the information in another way (getItem and getState for example)
JViewLegacy
Replace
Code:
$ this-> assign ('P1', $ P2)
Code:
$ this-> assignRef ('P1', $ P2)
Code:
$ this-> P1 = $ P2;
JDataBase
To replace :
Code:
if (! $ db-> query ()) {
Factory :: getApplication () -> enqueueMessage ($ db-> getErrorMsg (), 'ERROR');
return false;
}
through
Code:
try {
$ db-> execute ();
} catch (Exception $ e) {
Factory :: getApplication () -> enqueueMessage (JText :: sprintf ('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $ e-> getCode (), $ e-> getMessage ()), 'ERROR');
return false;
}
Idem it is necessary to replace the $ db-> getErrorNum () and the $ db-> getErrorMsg () by an exception handling as above.
For example, replace:
$ db-> setQuery ($ query);
$ results = $ db-> loadObjectList ();
if ($ db-> getErrorNum ()) {
JFactory :: getApplication () -> enqueueMessage ($ db-> getErrorMsg (), 'WARNING');
return false;
}
through
$ db-> setQuery ($ query);
try {
$ results = $ db-> loadObjectList ();
} catch (Exception $ e) {
JFactory :: getApplication () -> enqueueMessage (JText :: sprintf ('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $ e-> getCode (), $ e-> getMessage ()), 'ERROR');
return false;
}
JHtml
replace JHtml :: _ ('behavior.formvalidation');
by JHtml :: _ ('behavior.formvalidator');
JHtml :: _ ('behavior.tooltip'); // no longer exists
JForm
Use renderField () instead of getControlGroup
Use renderFieldset () instead of getControlGroups
Example :
Look for: form-> getControlGroup (
and replace with form-> renderField (
To install
Replace $ parent-> get ('manifest') -> version
by $ parent-> getManifest () -> version
Laatst bewerkt 3 jaren 11 maanden geleden door Support Team.
Graag Inloggen of een account aanmaken deelnemen aan het gesprek.
- Support Team
-
Onderwerp Auteur
- Offline
- Moderator
-
Minder
Meer
- Berichten: 107
- Ontvangen bedankjes 10
3 jaren 11 maanden geleden - 3 jaren 11 maanden geleden #2170
door Support Team
Beantwoord door Support Team in topic Upgrade your extension from Joomla 3.9 to Joomla 4
Some other tips:
error:
Call to undefined method Joomla\CMS\Filesystem\File::read()
change
into
or
Class 'JRequest' not found
into
or
into
error:
500 behavior::framework not found.
into
or some other example
into
error:
Call to undefined method Joomla\CMS\Filesystem\File::read()
change
Code:
JFile::read
Code:
jimport
Code:
file_get_contents
Class 'JRequest' not found
Code:
quote( JRequest::getVar('id') ));
Code:
quote( JFactory::getApplication()->input->post->get('id')));
or
Code:
$limitstart = JRequest::getVar('limitstart', 0, '', 'int');
$limitstart = $this->input->get('limitstart', 0, 'int');
error:
500 behavior::framework not found.
Code:
JHtml::_('behavior.framework', true);
Code:
JHtml::_('jquery.framework', true);
or some other example
Code:
JHtml::_('behavior.modal');
Code:
JHtml::_('bootstrap.modal');
Laatst bewerkt 3 jaren 11 maanden geleden door Support Team.
Graag Inloggen of een account aanmaken deelnemen aan het gesprek.
- Genevaheipt
- Offline
- Nieuw lid
-
Minder
Meer
- Berichten: 4
- Ontvangen bedankjes 0
3 dagen 19 uren geleden #2425
door Genevaheipt
Beantwoord door Genevaheipt in topic microsoft defender antivirus
We have thoroughly reviewed and evaluated the top
mcafee antivirus protection
to provide our readers with a curated list of the most trusted providers. Safeguard your personal data and computer from cyber threats choose one of the leading antivirus solutions from the table below!
Graag Inloggen of een account aanmaken deelnemen aan het gesprek.