Published: June 16, 2021
Last updated:

Uncaught Error: [] operator not supported for strings in app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php

Tags:

The following uncaught fatal error is thrown after upgrade to PHP7.x Magento 1.x Codazon theme:

Fatal error: Uncaught Error: [] operator not supported for strings in app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php:28 


Full stack strace is

Stack trace: #0 app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php(7): Codazon_Themeframework_Model_System_Config_Source_Categoriestree->printTree(Array, 1) #1 app/code/core/Mage/Adminhtml/Block/System/Config/Form.php(463): Codazon_Themeframework_Model_System_Config_Source_Categoriestree->toOptionArray(false) #2 app/code/core/Mage/Adminhtml/Block/System/Config/Form.php(229): Mage_Adminhtml_Block_System_Config_Form->initFields(Object(Varien_Data_Form_Element_Fieldset), Object(Mage_Core_Model_Config_Element), Object(Mage_Core_Model_Config_Element)) #3 app/code/core/Mage/Adminhtml/Block/System/Config/Form.php(164): Mage_Adminhtml_Block_System_Config_Form->_initGroup(Object(Varien_Data_Form), Object(Mage_Core_Model_Config_Element), Object(Mage_Core_Model_Config_Element)) #4 app/code/core/Mage/Adminhtml/Block/System/Config/Edit.php(92): Mage_Adminhtml_Block_System_Config_Form->initForm() #5 app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php(107): Mage_Adminhtml_Block_System_Config_Edit->initForm() #6 app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_System_ConfigController->editAction() #7 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('edit') #8 app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) #9 app/code/core/Mage/Core/Model/App.php(381): Mage_Core_Controller_Varien_Front->dispatch() #10 app/Mage.php(686): 


Cause

$_categoriesTree is initially defined as string and array is assigned later:
class Codazon_Themeframework_Model_System_Config_Source_Categoriestree
{
        protected $_categoriesTree = '';
//...
                        $this->_categoriesTree[] = array('value' => $item['category_id'],'label' => str_repeat("–––", $level)." ".$item['name']);
This is not allowed in PHP7.

Solution

The following patch against app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php should help:
--- app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php     
+++ app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php 
@@ -1,7 +1,7 @@
 <?php
 class Codazon_Themeframework_Model_System_Config_Source_Categoriestree
 {
-       protected $_categoriesTree = '';
+       protected $_categoriesTree = array();
        public function toOptionArray(){
                $tree = $this->loadTree();
                $this->printTree($tree['children'],0);



Posted in: Fatal errors, Known issues

2 votes, 3.00 avg. rating (63% score)