YiiFramework Виджет и return array()

StalkerClasses

Новичок
Попробовал с помощью виджета вернуть массив, но судя по всему виджеты на это не рассчитаны. Можно ли как-то в функции run() вернуть массив, а не строку?
 

Andkorol

Новичок
Учи уже PHP = количество глупых вопросов уменьшится в разы.
Метод возвращает то, что ты указываешь в return.
Happy New Year! :)
 

StalkerClasses

Новичок
Код:
<?php
namespace app\components;
use yii\base\Widget;

/*
use app\components\TestWidget;
<?= TestWidget::widget() ?>

*/

class TestWidget extends Widget
{
    public function init()
    {
    }

    public function run()
    {
        return [
            'a' => 1,
            'b' => 2
        ];
    }
}
?>


<?
$var = TestWidget::widget();
print_r($var);
?>
Возвращает строку "Array". Массива нет.
 

Andkorol

Новичок
Давай сначала: ты же понимаешь назначение виджетов?
Если понимаешь – то с чего бы виджетам возвращать что-либо, кроме результатов рендеринга?
Возможно, для того, что тебе нужно – тебе стоит попробовать использовать хелперы?
 

StalkerClasses

Новичок
Мне очень понравилось как на базе Yii2 можно создать виджет. Есть класс, есть параметры. Если какой-то из параметров не определен - то выводится ошибка.
А с хелперами как-то скромно - добавил одну функцию и еще какой-то ручной автозагрузчик нужно делать.

Можно ли хелперы оформить также как и виджеты?
Есть класс, один класс - это один хелпер + он автоматически загружается.
 

WMix

герр M:)ller
Партнер клуба
что значит "автоматически загружается"?
Код:
TestWidget::widget();
тут простой статический вызов
 

StalkerClasses

Новичок
Виджеты же наследуются от Yii родительского класса Widget, а хелперы получается что нет. Хотя по идее как думал у них тоже должен быть один какой-то родительский класс.
 

WMix

герр M:)ller
Партнер клуба
И что тебе дает, то что класс наследован от другого класса? Вопрос практической пользы.
Чем дальше ты думаешь о ненужных иерархиях тем больше уходишь от основной задачи.
Пробуй думать наоборот от проблемы к решению.
 
Сверху