CGridView - изменить url-ы кнопок редактирования, удаления

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
SvenSoft
Сообщения: 111
Зарегистрирован: 2014.01.16, 18:51

CGridView - изменить url-ы кнопок редактирования, удаления

Сообщение SvenSoft »

Добрый день.

Такая ситуация, есть две модели, Page и UrlPage
В модели UrlPage есть внешний ключ page_id (Page)
Теперь на странице редактирования записей Page (...../page/id/3) хочу вывести CGridView, в котором записи из модели UrlPage. Для этого в контроллере Page прописал приблизительно следующее:

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

public function actionUpdate($id)
    {
        $model=$this->loadModel($id);

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if(isset($_POST['Page']))
        {
            $model->attributes=$_POST['Page'];
            //print_r($_POST['Page']);
            if($model->save())
                $this->redirect(array('index'));
        }

        $modelUrlPage=new UrlPage;
        $modelUrlPage->page_id = $model->id;

        $this->render('update',array(
            'model'=>$model,
            'modelUrlPage'=>$modelUrlPage
        ));

    }
тем самым на страницу редактирования Page (...../page/id/3) параметром modelBuying передаю необходимые данные для построения CGridView по UrlPage, в параметрах которого прописываю следующее:

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

$this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'buying-pages-grid',
        'dataProvider'=>$modelUrlPage->search(),
        'filter'=>$modelUrlPage,
        'columns'=>array(
...............
...........
и все хорошо, CGridView строит необходимые мне данные по UrlPage на странице редактирования Page, НО! но по кнопкам редактирования и удаления напротив каждой строки в CGridView идут url-ы на Page, а не на UrlPage
Подскажите пожалуйста, как эти url-ы переопределить на UrlPage?
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: CGridView - изменить url-ы кнопок редактирования, удален

Сообщение lancedevnull »

зачем вам связи?)))
$model->getRelated('page');
Аватара пользователя
SvenSoft
Сообщения: 111
Зарегистрирован: 2014.01.16, 18:51

Re: CGridView - изменить url-ы кнопок редактирования, удален

Сообщение SvenSoft »

lancedevnull писал(а):зачем вам связи?)))
$model->getRelated('page');
А можете поподробнее, что именно и куда именно?
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: CGridView - изменить url-ы кнопок редактирования, удален

Сообщение lancedevnull »

и тогда в контроллере UrlPage можно получить
$url = $page->getRelated('url');
а в гриде $url->getRelated('page')->id (это равносильно $url->page_id)
Последний раз редактировалось lancedevnull 2014.05.07, 17:27, всего редактировалось 1 раз.
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: CGridView - изменить url-ы кнопок редактирования, удален

Сообщение lancedevnull »

хотя и так можно, без зависимостей, но в сылке передавайте не id, а page_id
Аватара пользователя
SvenSoft
Сообщения: 111
Зарегистрирован: 2014.01.16, 18:51

Re: CGridView - изменить url-ы кнопок редактирования, удален

Сообщение SvenSoft »

Понял, спасибо, помогли
Ответить