Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Methods of CoreExtensions expected in own writer extension #5

Open
weierophinney opened this issue Dec 31, 2019 · 4 comments
Open

Methods of CoreExtensions expected in own writer extension #5

weierophinney opened this issue Dec 31, 2019 · 4 comments
Labels
Bug Something isn't working

Comments

@weierophinney
Copy link
Member

Thank you for your writer example, froschdesign. I tested it and am getting an error message. This time I created a separate issue, because it's not related to the documentation ;)

I created an Entry class (extends Extension\AbstractRenderer) and registered it in my handler. But the output of my atom feed fails (using the export method). I get the error message:

call_user_func_array() expects parameter 1 to be a valid callback, class 'Webfeed\Writer\Renderer\Entry' does not have a method 'getItunesAuthors'

I can see that $authors = $this->getDataContainer()->getItunesAuthors(); of Writer/Extension/ITunes/Renderer/Entry.php is executed, before it fails. Why should my own Renderer need getItunesAuthors?

I assume on reason is that registerCoreExtensions() is called in the AbstractFeed constructor. Unfortunately I can't see a method to unregister the extension. When removing iTunes in the registerCoreExtensions method, the method getPlayPodcastBlock is expected. It would work if I remove everything except Atom.

Is this an unexpected behavior or am I doing something wrong?


Originally posted by @av3 at zendframework/zend-feed#87

@weierophinney weierophinney added the Bug Something isn't working label Dec 31, 2019
@weierophinney
Copy link
Member Author

I assume on reason is that registerCoreExtensions() is called in the AbstractFeed constructor.

I think that's the same problem as deregistering an extension.


Originally posted by @froschdesign at zendframework/zend-feed#87 (comment)

@weierophinney
Copy link
Member Author

Please look at #90 and my idea for an improvement. I think this should help also for you problem – remove core extension and add a custom extension.


Originally posted by @froschdesign at zendframework/zend-feed#87 (comment)

@weierophinney
Copy link
Member Author

Thank's for the info. Fortunately I kept an old branch with my attempts. I modified the code:

        /** @var \Zend\Feed\Writer\StandaloneExtensionManager $em */
        $em = \Zend\Feed\Writer\Writer::getExtensionManager();
        $em->remove('ITunes\Renderer\Feed');
        $em->remove('GooglePlayPodcast\Renderer\Feed');

        $em->add(
            'Webfeed\Renderer\Feed',
            \Webfeed\Writer\Renderer\Feed::class
        );

        Writer::setExtensionManager($em);
        Writer::registerExtension('Webfeed');

With the removal of ITunes\Renderer\Feed the error class 'Webfeed\Writer\Feed' does not have a method 'getItunesAuthors' was fixed and with the removal of GooglePlayPodcast\Renderer\Feed the error class 'Webfeed\Writer\Feed' does not have a method 'getPlayPodcastAuthors' disappeared. I didn't make any changed to the registerCoreExtensions method, you mentioned, so I could use it with zend-feed 2.11


Originally posted by @av3 at zendframework/zend-feed#87 (comment)

@weierophinney
Copy link
Member Author

@av3
Thanks for the feedback!


Originally posted by @froschdesign at zendframework/zend-feed#87 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant