можно ли впихнуть в grid.CGridView переменную??

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аллотха
Сообщения: 32
Зарегистрирован: 2011.07.31, 15:33

можно ли впихнуть в grid.CGridView переменную??

Сообщение Аллотха »

прошу прощения за нубство,но все же спрошу.

например

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

$t=12;
<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'office-grid',
    'dataProvider'=>$model->delivery(),
    
    'columns'=>array(
            'org_name',
                  'pole'=>array(
                header=>'Пакетов не отдано',
               
                     value=> '$t',
                 ),
?>
то есть я не могу впихнуть в виджет никаких сторонних переменных? Только из модельки? Табличкой уже сделал бы раз 20 и все работало...(
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение RusAlex »

а что в $t содержится ?
Аватара пользователя
greatdane
Сообщения: 408
Зарегистрирован: 2010.10.20, 14:05
Откуда: Электросталь
Контактная информация:

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение greatdane »

А почему у вас $t до открывающего <?php ? И для чего вы берете ее в кавычки?
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение RusAlex »

видимо человек добавил $t после моего поста. ну так почему же нельзя впихнуть. можно.
надо рассматривать так: все что передается в value=>'' будет выполнено с помощью eval. следовательно чтобы добавить в value значение - надо писать так:

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

value=>" ' " . $t . " ' " 
Аллотха
Сообщения: 32
Зарегистрирован: 2011.07.31, 15:33

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение Аллотха »

в value=>'' будет выполнено с помощью eval.
замечательно, oчень благодарствую.
а если так??
Снова вьюшка, в которую грузится model и model2

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

<?
foreach ( $model2 as $column)
        {
    $packet_not[$column->brend]++;
  }


<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'office-grid',
    'dataProvider'=>$model->delivery(),
    'columns'=>array(
            'org_name',
              'all_paket'=>array(
                header=>'Пакетов всего',
                type=>'html',
                  value=>'$data->count_p'),
             'org_name'=>array(
                header=>'Пакетов не отдано',
                 value=> " ' " . $packet_not[$data->brend] . " ' " ,
                 ), 
Ключ массива к значению это $data->brend. Подскажите пожалуйста синтаксис здесь??
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение RusAlex »

засунуть этот $packet_not в модель, и использовать $data->getPacketNot()
где в модели будет

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

public function getPacketNot() 
{
   $packet_not = array(bla bla bla);
   return $packet_not[$this->brend];
} 
Аллотха
Сообщения: 32
Зарегистрирован: 2011.07.31, 15:33

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение Аллотха »

А как я его засуну в модель?как видите он (массив) формируется во вьюшке, получая данные от model2.

либо функция будет срабатывать каждую строчку и делать запрос
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение RusAlex »

а что мешает формировать его в модели, а не вьюшке ?
Аллотха
Сообщения: 32
Зарегистрирован: 2011.07.31, 15:33

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение Аллотха »

в модели нету доступа к Model2, который и формирует массив, а во вьюшке есть, и как в модели дать доступ к model2 опять же я не знаю(.
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение RusAlex »

это кто убрал доступ к model2 ?
Аллотха
Сообщения: 32
Зарегистрирован: 2011.07.31, 15:33

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение Аллотха »

в общем то я сделал по другому и все работает, спасибо rak'у в другой теме, но все же очень хотелось бы узнать как сделать , как Вы предлагаете?

Model2 формируется и рендерится в контроллере, после чего во вьюшке я имею к ней доступ), в этой же вьюшке в виджете я вызываю функцию getPacketNot() .. ну и как эта функция получит доступ к Model2? заново ее формировать не вариант, это же запрос,тогда получим N лишних запросов, где N число строк в $Model

я с самого начала хотел сделать через функцию,но что то не хватает знаний,как это сделать правильно
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: можно ли впихнуть в grid.CGridView переменную??

Сообщение samdark »

Можно, если у вас php 5.3 через анонимную функцию и use.
Ответить