Fixed Deleting add-on template from ACP does not write changes to _output

Affected version

Jeremy P

Well-known member
As of 2.0.2, I've noticed that if I delete a template from the ACP the changes are not propagated to the file system. It worked fine in prior versions. I haven't seen this reported elsewhere though so maybe it's just something particular with my development environment.

If anyone else is experiencing this, you can:
  1. Run xf-dev:import -a Vendor/AddOn (so long as your file system contains the 'master' copy)
  2. Delete the _output folder (potentially destructive if you haven't imported first)
  3. Delete the template
  4. Run xf-dev:export -a Vendor/AddOn to write the _output folder back
Last edited:


Well-known member
This applies to all delete operations with dev outputable content:

    public function isDevOutputWritable()
        return (
            && $this->entity->getNewValues()
            && \XF::app()->developmentOutput()->isEnabled()
The line "$this->entity->getNewValues()" should be DevOutputWritable::PostSave not in isDevOutputWritable
Last edited:

Chris D

XenForo developer
Staff member
diff --git a/src/XF/Behavior/DevOutputWritable.php b/src/XF/Behavior/DevOutputWritable.php
index 6518da7..5ad4af3 100644
--- a/src/XF/Behavior/DevOutputWritable.php
+++ b/src/XF/Behavior/DevOutputWritable.php
@@ -20,6 +20,11 @@ class DevOutputWritable extends Behavior
+     if (!$this->entity->getNewValues())
+     {
+        return;
+     }
      $entity = $this->entity;
      $devOutput = \XF::app()->developmentOutput();
@@ -45,7 +50,6 @@ class DevOutputWritable extends Behavior
      return (
-        && $this->entity->getNewValues()
         && \XF::app()->developmentOutput()->isEnabled()
Sorry about that. This is the fix we'll go with for the next release.