Перебор массива из контроллера в js

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
asder117
Сообщения: 207
Зарегистрирован: 2014.07.06, 08:28

Перебор массива из контроллера в js

Сообщение asder117 »

Уважаемые Доброго времени суток!
Вопрос может и примитивный: Как можно передать в скрипт расположенный в коде массив из контроллера, а там его перебрать:
контроллер

Код: Выделить всё

public function actionZalB()
    {
        $this->pageTitle = 'Зал Б - ' . Yii::app()->name;
        $this->render('sxemazalb',array(
            'places' => ZalB::model()->findAll()
            ));
    }
 
вьюшка

Код: Выделить всё

<div id="stage" style="overflow:hidden"></div>

<script type="text/javascript">
function olyx() {
    
    var obj = ...; тут должно присваиваться значение полученное после перебора массива
    

$("#места g").each(function()
{
   $(this).find('#'+obj).attr('opacity', '1.0');
});
}
window.onload = function () {
    olyx();
}
</script>
Заранее благодарю
Аватара пользователя
valentinich
Сообщения: 171
Зарегистрирован: 2014.03.25, 13:58

Re: Перебор массива из контроллера в js

Сообщение valentinich »

foreach?
Тяжела и неказиста жизнь простого программиста :|
asder117
Сообщения: 207
Зарегистрирован: 2014.07.06, 08:28

Re: Перебор массива из контроллера в js

Сообщение asder117 »

valentinich писал(а):foreach?
это-то понятно. а как в данном примере этот массив передать в js? вот это мне интересно
Аватара пользователя
krosh87
Сообщения: 160
Зарегистрирован: 2015.02.18, 15:32
Контактная информация:

Re: Перебор массива из контроллера в js

Сообщение krosh87 »

Код: Выделить всё

    protected function renderJSON($data)
    {
        header('Content-type: application/json');
        echo CJSON::encode($data);

        foreach (Yii::app()->log->routes as $route) {
            if($route instanceof CWebLogRoute) {
                $route->enabled = false; // disable any weblogroutes
        }
    }
        Yii::app()->end();
    }
Переводишь в json, а дальше парсишь функцией $.ajax
Мануал по json

http://iviewsource.com/codingtutorials/ ... beginners/
Разработка, продвижение, сопровождение сайтов на Modx, Bitrix, Yii http://www.webapplex.ru
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Перебор массива из контроллера в js

Сообщение SiZE »

krosh87 писал(а):Переводишь в json, а дальше парсишь функцией $.ajax
Первая часть - ок. Вторая - 3.14здец ))) Зачем такие сложности?

в контроллере:

Код: Выделить всё

$this->render('sxemazalb',array(
  'places' => (array)ZalB::model()->findAll()
));
 
в представлении:

Код: Выделить всё

<script>
var places = <?php echo CJSON::encode( $places ); ?>
</script>
все.
asder117
Сообщения: 207
Зарегистрирован: 2014.07.06, 08:28

Re: Перебор массива из контроллера в js

Сообщение asder117 »

SiZE писал(а):
krosh87 писал(а):Переводишь в json, а дальше парсишь функцией $.ajax
Первая часть - ок. Вторая - 3.14здец ))) Зачем такие сложности?

в контроллере:

Код: Выделить всё

$this->render('sxemazalb',array(
  'places' => (array)ZalB::model()->findAll()
));
в представлении:

Код: Выделить всё

<script>
var places = <?php echo CJSON::encode( $places ); ?>
</script>
все.
Спасибо уважаемые. последнее я пробовал только без json .надо попробывать так. я эту задачу решид только постоянным запросом к таблице через аякс через цикл по каждому элементу.
Size: а Сообщение krosh87 » 2015.04.17, 01:32

Код: Выделить всё

    protected function renderJSON($data)
    {
        header('Content-type: application/json');
        echo CJSON::encode($data);

        foreach (Yii::app()->log->routes as $route) {
            if($route instanceof CWebLogRoute) {
                $route->enabled = false; // disable any weblogroutes
        }
    }
        Yii::app()->end();
    } 
функцию надо писать или без нее обойтись? а после получения в js простым foreach?
Ответить