Вопросы По Гриду

Добрый день уважаемые господа знатоки. В общем хотел бы у вас поинтересоваться 2-я вещами. Первое это как сделать в контроллере админ в гриде так что бы выводились только сообщения с конкретным айдишником. Я так понемаю вот этот код отвечает за вывод модели в контроллере админ, хотя это очевидно, имеется ввиду, я так понемаю надо изменить условия поиска по модели.




	public function actionAdmin()

	{

		    

        $model=new News('search');

        

      		$model->unsetAttributes();  // clear any default values

		if(isset($_GET['News']))

			$model->attributes=$_GET['News'];


		$this->render('admin',array(

			'model'=>$model,

		));

	}



здесь ‘search’ как то надо поменять, не вижу только где меняется. И откуда приходит инфа, но походу она приходит по аяксу, по событиям.

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

С уважением к вам и вашему труда HK416.

Насколько я понял вы хотите вывести не всю таблицу, а только то где id чего то равен чему то.

Совершенно верно. При изменении фильтров выполняется ajax запрос, в котором с помощью GET передаются значения фильтров. После этого мы присваиваем значения фильтров атрибутам модели и берем dataprovider из search() модели.

Возьмем search() из демо блога:




public function search()

        {

                $criteria=new CDbCriteria;


                $criteria->compare('title',$this->title,true);//собственно это и есть наши фильтры и сравнения по ним


                $criteria->compare('status',$this->status);


                return new CActiveDataProvider('Post', array(

                        'criteria'=>$criteria,

                        'sort'=>array(

                                'defaultOrder'=>'status, update_time DESC',

                        ),

                //чтобы вывести например то что вам нужно добавим следующее 

                        'condition'=>'my_awesome_id='.$my_id//тут решите как вы будете передавать, рекомендую при присвоении в контроллере добавлять ид, и использовать его здесь как $this->my_awesome_id 

                ));

        }



По поводу CGridView есть такая вещь http://www.yiiframework.com/doc/api/1.1/CGridView#selectableRows-detail

Собственно говоря это и есть то что вам нужно.

Пользоваться как то так:




.....

'columns'=>array(

        array(

            'class' => 'CCheckBoxColumn',

            'selectableRows' => '2',

            'id'=>'autoId',

        ),

.....



Далее у меня есть ajaxSubmitButton, где я отправляю данные с помощью




theIds : $.fn.yiiGridView.getChecked("grid_lists_id","autoId").toString()



Ну и нужно делать апдейт грида при success аякса.

Благодарю вас за ответ, но пока я его перевариваю, и не могу что то толковое ответить. Тяжелая для понемания штука. По поводу справочника API конечно я его читаю так как знаю английский, но там 3/4 описано настолько абстрактно. аля как хотите, так и понимайте, либо пока мой уровень оставляет желать лучше в чем я тоже уверен.

ЕЕЕЕЕЕЕ Чуть поковырялся и понял, что кое что упустил. А потом понял что упустил, и сделал то что хотел.




	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('id_news',$this->id_news);

		$criteria->compare('name',$this->name,true);

		$criteria->compare('introduction',$this->introduction,true);

		$criteria->compare('login',$this->login,true);

        

        if(Yii::app()->user->checkAccess('3')){

		$criteria->compare('id_user',$this->id_user);

        }

        

        

        

        if(Yii::app()->user->checkAccess('1')){

		$criteria->compare('id_user',Yii::app()->user->id);

        }

        

        

		$criteria->compare('date_news',$this->date_news,true);

        $criteria->compare('number_news',$this->number_news);

        

        

        

        


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}



Спасибо вам за подсказку))) Теперь надо 2 часть плана довершить.