jerome.celle@gmail.com Posted April 4, 2017 Share Posted April 4, 2017 (edited) Hello, I am using a CGridView with a CSqlDataProvider. I would like to dynamically change the text displayed in the cells for some columns. For instance: - instead of displaying a name, I would like to display a link - if a certain value is present, display this value in red I mean I want to put HTML in my cells and expect this HTML to be parsed and rendered by the browser. I don't want to change the class of the underlying <tr>, <td>... For so doing I put some expressions in the 'columns' array: 'columns' => array( 'phase', 'app', array( 'name' => 'version', 'value' => "preg_replace('/($today.+)/','<span style=\'color: red;\'>\$1</span>', \$data['version'])" ) , 'comment', 'nb', array( 'name' => 'deadline', 'value' => '"<a href=\'candidateRelease/view/id/\$data[\'id\']\'>\$data[\'deadline\']</a>)"' ) , 'status' ), Expression seems to be evaluated correctly but the text rendered in the cell shows the html tags (as if the result of the evaluation had gone through a call to htmlentities(). Does someone know how I could change this ? Thanks and regards. Edited April 4, 2017 by jerome.celle@gmail.com Link to comment Share on other sites More sharing options...
jerome.celle@gmail.com Posted April 4, 2017 Author Share Posted April 4, 2017 Answer found after some reading... In fact widgets are not really homogeneous... For CGridView you must specify the html type like this: array( 'name' => 'version', 'value' => "preg_replace('/($today.+)/','<span style=\'color: red;\'>\$1</span>', \$data['version'])", 'type' => 'html' ) , Link to comment Share on other sites More sharing options...
Larry Posted April 11, 2017 Share Posted April 11, 2017 Thanks for sharing what you learned! Much appreciated (and kudos for figuring it out)! Link to comment Share on other sites More sharing options...
Recommended Posts