Ссылки В Cbuttoncolumn

всем привет

могу ли я как-то повлиять на УРЛ-ы формируемые в колонке с иконками управления в CGridView?

ну, например: сейчас иконка Update ведет на адрес /page/update.html?id=4

а надо чтобы вела на /department/marketing/page/update.html?id=4

то есть контроллер так и останется Page, но в конфиге будут прописаны нужные УРЛ-ы и останется только как-то повесить нужную гиперссылку на соответствующую иконку


'/department/marketing/page'=>'page/admin',

ай нид ё хэлп

порешал сам =


array(

	'class'=>'CButtonColumn',

	'updateButtonUrl'=>'"/department/marketing/page/update.html?id=$data->id_page"'

),

p.s. если есть необходимость прописывать УРЛ в виде http = писать приходится внутри двойных кавычек, которые, в свою очередь, находятся внутри одинарных кавыче

Решение верно. Но для чего двойные кавычки в одинарных? Это лишнее. Хорошо получается просто в одинарных писать. Это нужно, что бы значение $data->id_page не сразу подставлялось в строку, а "дожило" до момента вызова eval()




array(

        'class'=>'CButtonColumn',

        'updateButtonUrl'=>'/department/marketing/page/update.html?id=$data->id_page' //так должно работать

        'updateButtonUrl'=>'/department/marketing/page/update.html?id={$data->id_page}' //ну или так

),



ну не знаю, не знаю…

когда подставлял УРЛ такого вида внутри одинарных кавычек - не срабатывало как надо…

то есть не читался нужный УРЛ

а как поставил двойные внутри одинарных и уже в них УРЛ - все заработало

С двумя видами кавычек я никогда не заморачивался, делал в моделе функцию для генерации нужного урла (хотя это не по канону, модель не должна таким заниматься)

И просто вызывал:


'updateButtonUrl'=>'$data->getUrlToEdit()',

Ага, я понял, строка ведь передается в eval(), и мое $data->getUrlToEdit() является валидным вызовом функции. А у вас


update.html?id=$data->id_page

это невалидный PHP код, поэтому его и приходится оборачивать в кавычки, что бы получалась валидная строка.

хз…хз…

сначала я пробовал тупо вставить http://yandex.ru

так НЕ работало =


'updateButtonUrl'=>'http://yandex.ru',

а так работало =


'updateButtonUrl'=>'"http://yandex.ru"',

тут наверное засада в том, что требуется УРЛ как PHP expression

Да, о чем я и сказал выше :)


eval(http://yandex.ru)

у вас однозначно не выполнится

ну вы то говорили в контексте $data->id_page

а тут вообще и в принципе

:lol:

Можно не заморачиваться и использовать функции function($data) { … } :)

анонимные функции что-ли?

так? =


'updateButtonUrl' = function($data) { // the logic here }

Да:


'updateButtonUrl'=>function($data) { // very complicated logic there }