2012-05-28 4 views
1

Я следующие документы здесь http://www.yiiframework.com/wiki/278/cgridview-render-customized-complex-datacolumns/CGridView кодируются значение

Так что я следующий в виду

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'item-table-grid', 
'dataProvider'=>$model->search(), 
'itemsCssClass'=>'item-table-grid', 
'columns'=>array(
    'customer_name', 
    array(
     'name'=>'Edit', 
     'value'=>array($model, 'editLink'), 
    ), 
), 
)); 

А вот функция editLink в модели

public function editLink($data, $row) { 
    $link = ''; 
    if ($data->is_draft) { 
     $link = '<a href="customer/update/'.$data->id.'">Edit</a>'; 
    } 
    return $link; 
} 

Проблема что у меня есть то, что возвращаемое значение закодировано, поэтому я получаю < a href = ...>

Есть ли способ сказать CGridView не кодировать значение?

Благодаря

+0

В основном вы можете кодировать/декодировать его на уровне представления, но это не лучший выбор. Dharmavir

+0

Он вышел как закодированный, и я не люблю использовать декодирование, я предпочитаю, чтобы он не был закодирован в первую очередь. Тип настройки для сырья, похоже, делает трюк –

ответ

5

Раствор А:

array(
    'name'=>'Edit', 
    'type' => 'raw', 
    'value'=>array($model, 'editLink'), 
), 

B: (не достаточно хорошо)

array(
    'name' => 'Edit', 
    'class' => 'CLinkColumn', 
    'urlExpression' => '$data->is_draft ? "customer/update/{$data->id}" : "#disabled"', 
    'label' => 'edit', 
), 
+0

Я предпочитаю решение A, потому что мне нужно обрабатывать специальный случай в модели. Настройка типа raw сделала трюк. Благодаря! –

2

попробовать это ..

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'item-table-grid', 
'dataProvider'=>$model->search(), 
'itemsCssClass'=>'item-table-grid', 
'columns'=>array(
    'customer_name', 
    array(
'name'=>'Edit', 
'type' => 'raw', 
'value'=>array($model, 'editLink'), 

), ), ));

+0

Это работает! Благодарю. Извините, я не могу выбрать два ответа. Оба двух ответа здесь хороши. –

0
my code in CGridView 

array(
     'name'=>'Post Content', 
     'value'=>array($model,'postContent'), 
     'type'=>'html', 
     'htmlOptions'=>array('width'=>'380'), 
    ), 

in Model I have the following method 

public function postContent($data){ 
    echo $data->content; 
} 

it works fine but when i click on another page of my pagination 
then it doesn't works means it work only on Index page first time opened... 

plz any solution....???