Warning: extract() expects parameter 1 to be array

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 12 марта 2015 в 20:03
При создании нового модуля возникает варнинг
Warning: extract() expects parameter 1 to be array, null given in ..../system/core/template.php on line 1316

строка 1316
  1.  
  2. public function renderWidget($widget, $data=array()){
  3. ...
  4. 1316: extract($data);
  5. ...
  6. }
  7.  
От чего может быть? $data ведь в любом случае является массивом.

p.s. версия 2.1.2
#2 12 марта 2015 в 20:13
Rossoman, это от того, что до 1316 строчки доходит $data в которой уже не массив, а судя по фразе null given в ней вообще ничего нет. Он либо изначально не задан при вызове renderWidget($widget, $data); либо в процессе обработки теряет своё значение.
#3 12 марта 2015 в 20:23

а судя по фразе null given в ней вообще ничего нет

Loadырь
так на этот случай здесь же и прописано $data=array()
  1. public function renderWidget($widget, $data=array())
то есть $data при вызове функции в любом случае будет являтся массивом
#4 12 марта 2015 в 20:29
var_dump($data) выводит NULL
но почему?
#5 12 марта 2015 в 20:39
У вас var_dump($data) выводит NULL — это если прописать var_dump($data) сразу после
  1. public function renderWidget($widget, $data=array()){
????
#6 12 марта 2015 в 20:39

то есть $data при вызове функции в любом случае будет являтся массивом

Не в любом, а только в том случае если второй параметр не передавался вообще. Как вариант используйте приведение типа к массиву или проверку на is_array… бог знает что там у вас в предыдущих 1315 строках
#7 12 марта 2015 в 20:40

var_dump($data) выводит NULL

Rossoman
в двойке используется
  1. dump($data)
#8 12 марта 2015 в 20:42

в двойке используется
Код PHP:
dump($data)

Loadырь
выводит array()
#9 12 марта 2015 в 20:44
вот вся функция до 1316

  1.  
  2. public function renderWidget($widget, $data=array()){
  3.  
  4. $tpl_path = cmsCore::getWidgetPath($widget->name, $widget->controller);
  5.  
  6. $tpl_file = $this->getTemplateFileName($tpl_path . '/' . $widget->getTemplate());
  7.  
  8. extract($data);
  9.  
Это вообще из файла core/template.php
По идее он вообще должен быть не причем…
#10 12 марта 2015 в 20:49
Rossoman, тогда как вы вызаваете ваш виджет?
  1. echo renderWidget('некий_виджет', $data)
или
  1. echo renderWidget('некий_виджет')
#11 12 марта 2015 в 20:56

Rossoman, тогда как вы вызаваете ваш виджет?

Loadырь
А вернее что тогда возвращает ваш виджет? Должен вернуть массив, а на самом деле что?
#12 12 марта 2015 в 21:05
Loadырь, Pasha,
виджет отображает то что и должен, ту инфу, которую я указываю, с этим проблем нет. Виджет полностью работает.
Виджет я никак не вызываю, я его после установки размещаю в нужном месте в админке.
#13 12 марта 2015 в 21:07
блин!!! спать срочно)
спасибо всем за помощь)
сам туплю, из файла виджета не возвращаю ничего, вот он и ругается
#14 12 марта 2015 в 21:11

сам туплю

Rossoman
и такое бывает.
#15 12 марта 2015 в 21:19
CLOSE
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.