Filtrar registro com uma condição fixa no gridview

Brodis tenho um sistema que cadastar cliente e fornecedores na mesma tabela mais no sistema eu tenho a view fornecedores que mostra so os fornecedore e cliente que mostra so o cliente, o meu problema é o seguinte, quando carrega o index ele mostra certo os registro para cada view, mas quando digito uma letra na pesquisa ele retorna fornecedor e cliente (resumindo mostra todos os registro)

O campo tipo grava F= fornecedor e CF Cliente/fornecedor então na view de fornecedor so deve mostrar no grid o registro que tem F no tipo;

Meu model fornecedor:


public function search()

	{

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

		// should not be searched.


		$criteria=new CDbCriteria;

                if($this->pesquisar == ''){

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

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

 	                $criteria->compare('tipo',"F",true);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


                }else{

            

                        $criteria->compare('id',$this->pesquisar,true,'OR');

		        $criteria->compare('nome',$this->pesquisar,true,'OR');

		        $criteria->compare('tipo',"F",true,'OR');

		        $criteria->compare('tipocadastro',$this->pesquisar,true,'OR');

		        $criteria->compare('cpfcnpj',$this->pesquisar,true,'OR');

		        $criteria->compare('telefone1',$this->pesquisar,true,'OR');

		        $criteria->compare('telefone2',$this->pesquisar,true,'OR');

		        $criteria->compare('site',$this->pesquisar,true,'OR');

		        $criteria->compare('endereco',$this->pesquisar,true,'OR');

		        $criteria->compare('numero',$this->pesquisar,true,'OR');

		        $criteria->compare('complemento',$this->pesquisar,true,'OR');

		        $criteria->compare('bairro',$this->pesquisar,true,'OR');

		        $criteria->compare('cep',$this->pesquisar,true,'OR');

		        $criteria->compare('cidade',$this->pesquisar,true,'OR');

		        $criteria->compare('estado',$this->pesquisar,true,'OR');

                        $criteria->compare('observacoes',$this->pesquisar,true,'OR');

		        $criteria->compare('situacao',$this->pesquisar,true,'OR');

		        $criteria->compare('datacadastro',$this->pesquisar,true,'OR');

		        $criteria->compare('email',$this->pesquisar,true,'OR');

		        $criteria->compare('contato',$this->pesquisar,true,'OR');

		        $criteria->compare('celular',$this->pesquisar,true,'OR');

		        $criteria->compare('fax',$this->pesquisar,true,'OR');

		        $criteria->compare('departamento',$this->pesquisar,true,'OR');

                }


		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

                        'pagination'=>array(

                        'pageSize'=>Yii::app()->params['PageSize'],

                ),

		));

	}

Controler fornecedor:




public function actionIndex()

	{

		$model=new Fornecedor('search');

                $model->pesquisar = $_GET['pesquisar'];

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

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

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


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

			'model'=>$model,

		));

	}



ja tentei de tudo alguem poderia me ajudar

Valew desde já

Acho que isso deve funcionar.

Na actionIndex, depois que ele verificar se if(isset($_GET[‘Fornecedor’])) e o $model receber os atributos que foram preenchidos pelo filtro, vc acrescenta o valor fixo para o tipo.

Veja abaixo:




        public function actionIndex()

        {

                $model=new Fornecedor('search');

                $model->pesquisar = $_GET['pesquisar'];

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

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

                {

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

                        $model->tipo = 'F';

                }


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

                        'model'=>$model,

                ));

        }



Continua tando o mesmo problema, listando tudo…

Amigo se entendi bem, tenta assim:




	public function search() {

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

    	// should not be searched.


    	$criteria = new CDbCriteria;

    	$criteria->condition = 'tipo = "F"';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    	return new CActiveDataProvider(get_class($this), array(

        	'criteria' => $criteria,

        	'pagination' => array(

            	'pageSize' => Yii::app()->params['PageSize'],

        	),

    	));

	}



Esse


if($this->pesquisar == '') 

dentro do seu search…

Este atributo pesquisar esta iniciado com ‘’ ?

Verifica se ele realmente esta caindo dentro do if ou se esta indo para o else…

E tb arruma o


$criteria->compare('tipo',"F",true); 

volta para


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

Valew brodi vou testar

Deu certo?

Deu certo é que estava fazendo o filtro antes e tinha que se despois da pesquisa.

Valew a ajuda!