Magento 2 Override by preference not working in my custom module - magento2

I was trying to override
<preference for="Magento\Customer\Model\CustomerRegistry" type="Mycustom\Mymodule\Model\CustomerRegistry" />
under etc/di.xml. But after running the
php bin/magento setup:upgrade
command will get the 'catalog rule indexing failed' error message. And under the system.log file it will show the below error message -
Type Error occurred when creating object:
Magento\Customer\Model\ResourceModel\AddressRepository,
Note: I have deleted the generated folder and run all required commands. Also, my magento version is 2.3.

I had a similar issue with a preference over a class that is injected into a plugin constructor.
The problem seems to be caused by the Magento developer mode that doesn't have all of the DI data generated at the time the plugin is executed, causing the error when executing the constructor and the DI fails.
Switching to default mode seems to fix the problem.
bin/magento deploy:mode:set default
Anyways, I finally changed the implementation on the classes that use the overridden class in order to use a custom interface that is overridden by the preference, and use the module dependency to make my new module load after the modified one (using sequence dependency).
This is not the best solution, but it worked and I could do this because both modules are from my company, and are implemented in the app/code folder.
You should use plugins instead of preference if you can.

I have had the same issue and after hours of searching I saw some of the classes can not be overridden. You can see more details about this issue here:
https://github.com/magento/magento2/issues/2674
I used magento "around" plugin instead of <preference/>.

Related

TYPO3 Frontend Error: #1476045117 and TYPO3 Frontend Error: #1580056272

I am setting up a new TYPO3 Project for my company, this project is based on a previously existing Project, as the customer asked us to take it over. So I started with my company's kickstarter to create an empty but working Project. I then started adding the "old" content as well as the extensions used. Here I came across a problem: I added the news extension by Georg Ringer via composer and the frontend of the website showed the following Error:
(1/1) #1476045117 TYPO3\CMS\Extbase\Persistence\Generic\Exception\InvalidClassException
Could not find class definition for name "GeorgRinger\News\Domain\Model\DateTime
This could be caused by a mis-spelling of the class name in the class definition.
I found nothing about this online, checked my entire \ext-folder and didn't find anything related to this. I un- and reinstalled the news extension via composer but that didn't solve the problem either. I also have an issue, where I can't use the backend or the command line to flush my caches, so naturally I deleted the var\cache-folder and upon reloading my frontend I was prompted with another Error:
(1/1) #1580056272 TYPO3\CMS\Extbase\Persistence\Generic\Mapper\Exception\NonExistentPropertyException
The type of property GeorgRinger\News\Domain\Model\NewsDefault::eventStart could not be identified, as property eventStart is unknown to the TYPO3\CMS\Extbase\Reflection\ClassSchema instance of class GeorgRinger\News\Domain\Model\NewsDefault. Please make sure said property exists and that you cleared all caches to trigger a new build of said TYPO3\CMS\Extbase\Reflection\ClassSchema instance
I can still access the install tool as well as the backend. Clearing the cache doesn't change anything and my colleagues advised me to ask the TYPO3 community. This Project runs on TYPO3 version 10.4.12. Any and all help is appreciated, thank you. I am still very new to TYPO3, so please bare with me.
It turns out that there were two rogue DateTime's hiding in one of the non-composer extensions that were missing the \ before them. I also had to add to my ext_emconf.php the following:
'suggests' => [
'news' => '7.3.0-0.0.0',
],
Which also fixed the issue of me not being able to clear my cache, and upon reloading my frontend I saw content again.
Thank you everyone on here and Slack for the help!

How can I get back access to the backend of TYPO3 when fluidpages are causing an error on backend and frontend?

I got to work on a Typo3 page and I have to say I'm at the very beginning if it comes to TYPO3.
So I wanted to fix a bug and updated the plugin "fluidpages" from version 4.1.0 (I guess) to 4.3. That cause the "Oops, an error occurred!" in the backend and frontend, so I dont have access from that side. I still have the FTP login for the website. The version of TYPO3 is 8.7.18.
The errorcode I get is that one:
Could not analyse class:
"FluidTYPO3\Flux\Configuration\ConfigurationManager" maybe not loaded
or no autoloader?
Class FluidTYPO3\Flux\Configuration\ConfigurationManager does not exist
So does anyone know what I need to do?
From my research I think I need to update another plugins to make it back to work? And can I update them just by uploading them through FTP?
Thanks in advance!
Edit: After I tried to get the old version of the plugin running, I'm getting this error code from the log file:
Mon, 17 Feb 2020 22:59:56 +0100 [ALERT] request="fec23f8baf6dc" component="TYPO3.CMS.Frontend.ContentObject.Exception.ProductionExceptionHandler": Oops, an error occurred! Code: 2020021722595594039a4d - {"exception":"TYPO3\CMS\Extbase\Mvc\Exception: The default controller for extension \"Flux\" and plugin \"Page\" can not be determined. Please check for TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin() in your ext_localconf.php.
You can enter the Install Tool via https://example.org/typo3/install.php and start with Check for broken extensions. If that doesn't yield the extension in question, you can always manually change the PackageStates.php file and remove the extension you want to unload. Afterwards you should flush all caches through the Install Tool.
In the long term you should consider a few things:
Use a local development environment which mirrors your production environment. You can safely perform all steps without any risk here before deploying.
Use a deployment strategy/tool which allows for rollbacks. This allows you to quickly revert to a working version of your instance in case all other checks have failed. A simple but flexible solution is Deployer, you'll need SSH for this though.
Have you tried dumping autoload from Install Tool? Generally, it would help for the class not loaded problem. Otherwise, you may want to check the log at typo3/temp/var/log/ and find the errors in code.

TYPO3 backend form module gives error when creating forms

I'm currently running TYPO3 version 8.7.18 and running a site_package that was made by using the site package builder: link
Whenever I try to add a form by using the default backend forms module I get the default message Oops, an error occurred! along with that the following error
TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Converters\AddHmacDataConverter not found
Searching for the issue I get several hits on the Gitlab but these do not provide any solution.
Along with this setup, I've added the forms module as a static include in my top-level template.
do you have a composer installation or an extension manager build up?
If a class is not found you may need to rebuild the autoloader information.
My error turned out to be caused by a corrupt installation. I've had to upload the file AddHmacDataConverter.php in the following path /public_html/typo3/sysext/form/Classes/Domain/Configuration/FormDefinition/Converters. A very weird error indeed.
For those that came here with the same error, make sure to check that folder. Apart from that add the news as a static inclusion in your top domain. You could also follow #Bernd Wilke's idea which s to disable the extension, clear all system caches (and additionally remove typo3/temp/autoload and then active the extension again.

Typo3 4.7.0 update breaks my FE login?

I've updated my Typo3 from 4.5.5 to 4.7.0 and I get several deprecated errors:
ERROR: Content Element type "login" has no rendering definition!
call to undefined error in t3lib_div::view_array
fail to include class.t3lib_htmlmail.php
The install tool gives me "typo3/ext/ directory not writable" but I've the correct right. I've even allow all?????
When I select a CType Element in the BE it give me this warning: PHP Warning
PHP Warning: Invalid argument supplied for foreach() in /var/www/typo3_src-4.7.0/t3lib/l10n/parser/class.t3lib_l10n_parser_llphp.php line 95
The solution for 2. is to use the new class t3lib_utility_debug but what is with the other errors?
Edit: 1. http://lists.typo3.org/pipermail/typo3-english/2011-November/078129.html
Edit 2: The solution for the missing class t3lib_htmlmail is to include another class t3lib_mail_message: require_once(PATH_t3lib .'mail/class.t3lib_mail_message.php');
You solved allready: install system extension "felogin"
you solved allready: use t3lib_utility_debug
check where the error is from. Often it is helpfull to search for that file in typo3conf/temp_*.
You could check your filesystem, if your webserver is allowed to write to typo3/ext/. I guess, it is not. But you do not need to. Usually you install extensions to typo3conf/ext/.
Update your language files via the extension manager.
Well, i know it is to late now, but for all others wo think about an update: just activate the deprecation log in the isntall toll and fix that problems first!
Updating from 4.5.X to 4.7.x broke my felogin as well. The reason was that there has been a local extension installation that has been of higher priority than the system one. So if you suffer the same update issue, check for an local installation of felogin in "typo3conf/ext" - and delete it in case it is there. This solved my problem!

Problems with zend-tool reporting that providers are not valid

I have recently setup XAMPP 1.7.3 and ZendFramework 1.10.4 on a new computer and many of the commands that I normally use now fail.
Here are the steps I used to setup and test ZF.
First I added the ZF library folder (C:\xampp\php\ZendFramework-1.10.4\library) to the include path in php.ini.
Then I added the ZF bin folder (C:\xampp\php\ZendFramework-1.10.4\bin) to my Path system variable.
To test that everything is configured correctly I ran the command "zf show version" from the command line. The result is "Zend Framework Version: 1.9.6".
Immediately something appears to be wrong. The file that is downloaded is "ZendFramework-1.10.4.zip" and the reported version is 1.9.6. I have re-downloaded the latest version (1.10.4) and removed old copy. Still the incorrect version number problem persisted.
Having done some research there is a bug in the ZF knowledgebase that version 1.10.3 reports a wrong version number. So that may explain the version number problem.
Moving forward I tried to run some zf-tool commands and certain commands reports that the action or provider is not valid.
Example:
C:\xampp\htdocs>zf create project test
Creating project at C:/xampp/htdocs/test
C:\xampp\htdocs>cd test
C:\xampp\htdocs\test>zf create controller Test
Creating a controller at C:\xampp\htdocs\test/application/controllers/TestController.php
...
Updating project profile 'C:\xampp\htdocs\test/.zfproject.xml'
C:\xampp\htdocs\test>zf create action test Test
Creating an action named test inside controller at C:\xampp\htdocs\test/application/controllers/TestController.php
...
Updating project profile 'C:\xampp\htdocs\test/.zfproject.xml'
C:\xampp\htdocs\test>zf enable layout
An Error Has Occurred
Action 'enable' is not a valid action.
...
C:\xampp\htdocs\test>zf create form Test
An Error Has Occurred
Provider 'form' is not a valid provider.
...
Can any one provide insight into these errors and how to correct them?
I had a similar issue, it turned out that I needed to manually update the zf.bat and zf.php files that came included with xampp after updating to the latest zend framework.
I got them from the zend svn here: http://framework.zend.com/svn/framework/standard/trunk/bin/
the simple way if you are using xampp, just go to the path "xampp\php\PEAR" an replace the older Zend directory with all included files by a new one zend 1.10... dir and your porblems are lost :)
i think your problem is, that Zend Tool is shipped with xampp since some versions.
Try to find zf.bat in your Xampp directory and remove it ;)
ZF friends have written the worst kind of docs. For XAMPP user, it is more difficult. I have learning ZF and posting error getting on the path. I am also using XAMPP.
Your error list is very big. I hope I can help you.
Solution for error "An Error Has Occurred
Action 'enable' is not a valid action." is XAMPP's Zend Tool installation. Delete that.
Check here for more details about the solution and other possible errors: http://www.satya-weblog.com/2010/11/zend-framework-creating-layout.html.