#6356: helper + isset bug line: 588 ----------------------------------------+----------------------------------- Reporter: m | Owner: Type: Bug | Status: new Priority: Medium | Milestone: 1.2.x.x Component: View | Version: 1.2 Final Severity: Normal | Resolution: Keywords: helper formhelper isset | Php_version: PHP 5 Cake_version: 1.2.2.8120 | ----------------------------------------+----------------------------------- Old description:
> cakephp 1.2, php5, > My code before: > echo $form->create(null, array('url' => '/TheController/index', > 'type' => 'file')); > echo $form->input('name'); > echo $form->end(); > > Output: > Fatal error: Cannot use string offset as an array in > /my_path_to_cake/cake/libs/view/helper.php on line 588 > > My digression: > In google: > http://bugs.php.net/bug.php?id=32621 > So it is not bug in php: > The code > isset($arr['a]['b]) couses fatal error, when $arr['a'] does not exist. > > What i did: > From: /cake/libs/view/helper.php lines 579-591 > if (isset($this->data[$fieldName]) && $modelName === > null) { > $result = $this->data[$fieldName]; > } elseif (isset($this->data[$modelName][$fieldName])) { > $result = $this->data[$modelName][$fieldName]; > } elseif (isset($this->data[$fieldName]) && > is_array($this->data[$fieldName])) { > if (ClassRegistry::isKeySet($fieldName)) { > $model =& > ClassRegistry::getObject($fieldName); > $result = > $this->__selectedArray($this->data[$fieldName], $model->primaryKey); > } > } elseif > (isset($this->data[$modelName][$modelID][$fieldName])) { > $result = > $this->data[$modelName][$modelID][$fieldName]; > } > > To: > if (isset($this->data[$fieldName]) && $modelName === null) { > $result = $this->data[$fieldName]; > } elseif > (isset($this->data[$modelName])&&isset($this->data[$modelName][$fieldName])) > { > $result = $this->data[$modelName][$fieldName]; > } elseif (isset($this->data[$fieldName]) && > is_array($this->data[$fieldName])) { > if (ClassRegistry::isKeySet($fieldName)) { > $model =& ClassRegistry::getObject($fieldName); > $result = $this->__selectedArray($this->data[$fieldName], > $model->primaryKey); > } > } elseif (isset($this->data[$modelName])&& > isset($this->data[$modelName][$modelID]) && > isset($this->data[$modelName][$modelID][$fieldName])) > { > $result = $this->data[$modelName][$modelID][$fieldName]; > } > > Result: Everything works fine, > regards, > m New description: cakephp 1.2, php5, My code before: {{{ echo $form->create(null, array('url' => '/TheController/index', 'type' => 'file')); echo $form->input('name'); echo $form->end(); }}} Output: Fatal error: Cannot use string offset as an array in /my_path_to_cake/cake/libs/view/helper.php on line 588 My digression: In google: http://bugs.php.net/bug.php?id=32621 So it is not bug in php: The code isset($arr['a]['b]) couses fatal error, when $arr['a'] does not exist. What i did: {{{ From: /cake/libs/view/helper.php lines 579-591 if (isset($this->data[$fieldName]) && $modelName === null) { $result = $this->data[$fieldName]; } elseif (isset($this->data[$modelName][$fieldName])) { $result = $this->data[$modelName][$fieldName]; } elseif (isset($this->data[$fieldName]) && is_array($this->data[$fieldName])) { if (ClassRegistry::isKeySet($fieldName)) { $model =& ClassRegistry::getObject($fieldName); $result = $this->__selectedArray($this->data[$fieldName], $model->primaryKey); } } elseif (isset($this->data[$modelName][$modelID][$fieldName])) { $result = $this->data[$modelName][$modelID][$fieldName]; } }}} To: {{{ if (isset($this->data[$fieldName]) && $modelName === null) { $result = $this->data[$fieldName]; } elseif (isset($this->data[$modelName])&&isset($this->data[$modelName][$fieldName])) { $result = $this->data[$modelName][$fieldName]; } elseif (isset($this->data[$fieldName]) && is_array($this->data[$fieldName])) { if (ClassRegistry::isKeySet($fieldName)) { $model =& ClassRegistry::getObject($fieldName); $result = $this->__selectedArray($this->data[$fieldName], $model->primaryKey); } } elseif (isset($this->data[$modelName])&& isset($this->data[$modelName][$modelID]) && isset($this->data[$modelName][$modelID][$fieldName])) { $result = $this->data[$modelName][$modelID][$fieldName]; } }}} Result: Everything works fine, regards, m Comment (by mark_story): Making code readable. -- Ticket URL: <https://trac.cakephp.org/ticket/6356#comment:1> CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/> Cake is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "tickets cakephp" group. To post to this group, send email to tickets-cakephp@googlegroups.com To unsubscribe from this group, send email to tickets-cakephp+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/tickets-cakephp?hl=en -~----------~----~----~----~------~----~------~--~---