xenvn

How to fix conflicts between Xenforo 2 add-ons

Error log example:
Note this is an example, The errors you get may vary.
Fatal Error: Declaration of AddonA\BbCode\Renderer\Html::getRenderedAttachment($attachment, array $viewParams) must be compatible with AddonB\XF\BbCode\Renderer\Html::getRenderedAttachment($attachment, $viewParams)

Fatal Error: Declaration of AddonA\Entity\Thread::getStructure(XF\Mvc\Entity\Structure $structure) must be compatible with AddonB\XF\Entity\Thread::getStructure(XF\Mvc\Entity\Structure $structure): XF\Mvc\Entity\Structure

In the example I use 2 add-ons, A and B.
You see in the error log where the files are in conflict:
AddonA\BbCode\Renderer\Html::getRenderedAttachment($attachment, array $viewParams)
=> src\addons\AddonA\BbCode\Renderer\Html.php

AddonB\XF\BbCode\Renderer\Html::getRenderedAttachment($attachment, $viewParams)
=> src\addons\AddonB\XF\BbCode\Renderer\Html.php

Function: getRenderedAttachment
and
AddonA\Entity\Thread::getStructure(XF\Mvc\Entity\Structure $structure)
=> src\addons\AddonA\Entity\Thread.php

AddonB\XF\Entity\Thread::getStructure(XF\Mvc\Entity\Structure $structure)
=> src\addons\AddonB\XF\Entity\Thread.php

Function: getStructure

To fix, first open up each pair of files that are in conflict, for example:
src\addons\AddonA\BbCode\Renderer\Html.php
src\addons\AddonB\XF\BbCode\Renderer\Html.php
-> find fuction: getRenderedAttachment

src\addons\AddonA\Entity\Thread.php
src\addons\AddonB\XF\Entity\Thread.php
-> find fuction: getStructure

You will see that the function declaration between file pairs is not the same, for example:
AddonA: getRenderedAttachment($attachment, array $viewParams) {...}
AddonB: getRenderedAttachment($attachment, $viewParams) {...}

AddonA: getStructure(Structure $structure) {...}
AddonB: getStructure(Structure $structure): Structure {...}

And what you need to do is edit the declarations to be the same, for example:
AddonA: getRenderedAttachment($attachment, array $viewParams) {...}
AddonB: getRenderedAttachment($attachment, array $viewParams) {...}

AddonA: getStructure(Structure $structure) {...}
AddonB: getStructure(Structure $structure) {...}

And it's done. Error has been fixed.
 
Last edited:
Top