Technical resource
Uncaught Error: [] operator not supported for strings in app/code/local/Codazon/Themeframework/Model/System/Config/Source/Categoriestree.php
Note: This is a historical reference, not a current security baseline. Magento 1 is end-of-life.
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 @@
loadTree();
$this->printTree($tree['children'],0);