как распечатать array в CGridView

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
Reinchold
Сообщения: 48
Зарегистрирован: 2013.01.17, 02:19

как распечатать array в CGridView

Сообщение Reinchold »

у меня проблема связана с CGridView, а именно:
в CGridView вывести на экран определённые id-шники, но не просто вывести, а посчитать сколько получилось id-шников вместе, и дальше эти id-шник распечатать в _view.

я в моделях сделал запрос на базу данных, вообщем выборка из таблиц, из которых я получил id-шники.

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

public function renderStudentCount($data=null,$row=0)
        { 
$int = $data->id;
            $retar = array();
            
            $num = array(':num' => $int);
            
            $sql = "SELECT * FROM 
                    user JOIN student 
                    WHERE user.school_id= :num
                    AND student.user_id = user.id";
            
            $rows = User::model()->findAllBySql($sql,$num);
  
            foreach ($rows as $row){

                $retar[] = $row->id;
            } 
            return $retar;
        }
 
Теперь мне нужно этот array получить в view/cockpit/admin.php
я делаю так:

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

    $this->widget('zii.widgets.grid.CGridView', array(
    //'id'=>'school-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        // 'id',
        'name',
                array(  'name'  =>Yii::t('labels','parent_id'),
                        'type'  =>'raw',
                        // вот здесь  в 'value' => я замучился конкретно как именно это сделать
                        'value' =>'CHtml::link(CHtml::encode(
                            // вот в этом месте                 
                            $data->renderStudentCount($data,$model))
                           // остальная часть не важна
                        , array("index", "id"=>$data->id))'
                     ), 
заранее благодарен.
PS Тока не отсылайте гулять по линкам в API, если бы там разобрался, то не стал бы здесь спрашивать!
Последний раз редактировалось Reinchold 2013.01.17, 23:52, всего редактировалось 3 раза.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: как распечатать array в CGridView

Сообщение lancecoder »

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

//The [code] tag switches to a fixed-width (monospace) font and preserves all spacing.

    [code]value
    Usage
    

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

    <script type="text/javascript">
    <!--
        alert("Hello world!");
    //-->
    </script>
    
[/code]
(c) https://www.vbulletin.com/forum/misc.php?do=bbcode#code
Reinchold
Сообщения: 48
Зарегистрирован: 2013.01.17, 02:19

Re: как распечатать array в CGridView

Сообщение Reinchold »

чё это такое?
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: как распечатать array в CGridView

Сообщение lancecoder »

это толстый намек на первый тонкий пост, что лучше весь "код" взять в

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

echo 'я изучил тег [code=php]echo "Hello World";
 (bbcode)';[/code]
п.с. вы "девственник" с форумами?
result:
я изучил тег

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

echo "Hello World"; 
(bbcode)
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: как распечатать array в CGridView

Сообщение Koduc »

Reinchold писал(а):у меня проблема связана с CGridView, а именно:
А также проблема с sql и много еще чем;)
Зачем делать SELECT * ... кодга надо выбрать только id? Да, и параметр $row в функции вы никак не используете.

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

$sql = "SELECT id FROM 
                    user JOIN student 
                    WHERE user.school_id= :num
                    AND student.user_id = user.id";
return Yii::app()->db->createCommand($sql)->queryColumn($num);
 
$data->renderStudentCount($data,$model)) - тут, я так понимаю, ругается на $model? Правильно, такое переменной нет. Есть только $data и $this. Но всёравно я не понимаю что вы пытаетесь сделать всем этим кодом.
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Ответить