Crud

Czy ktoś nie wie jak zrobić by strona zrobiona przez crud i z wyszukiwarką w tym standardowo nazwana Advanced search, którą ja zrobiłem jako główną i mam problem z tym że chce by dane nie byly widoczne od razu tylko po wpisaniu do miejsca wyszukania i wtedy znalazly się na tej stronie głównej bądż przeszły do następnej strony.

Musisz coś więcej i jaśniej napisać. Czytając powyższy tekst nie wiadomo o co Ci chodzi.

na stronie mam tabele z bazy danych i są pokazane i podzielone na strony 6432

slow.jpg

a potrzebuje by po wpisaniu słowa w danym polu pojawił sie wynik dopiero a teraz jak na zdjęciu od razu cała baze pokazuje i po wpisaniu danego słowa sortuje i pokazuje zgodne . Dokładnie na początku chce by strona była pusta a po podaniu danych dopiero się pojawiły. Np by na początku był wygląd tego typu 6433

slowi.jpg
Według mnie trzeba w modelu coś zmienić w tym kodzie:

public function search()

{


	// @todo Please modify the following code to remove attributes that should not be searched.





	$criteria=new CDbCriteria;





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


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





	return new CActiveDataProvider($this, array(


		'criteria'=>$criteria,


	));


}

Jeśli zmodyfikowałem model tak

public function search()

{


	// @todo Please modify the following code to remove attributes that should not be searched.





	$criteria=new CDbCriteria;





	$criteria->addBetweenCondition('Angielski',$this->Angielski,true);


	$criteria->addBetweenCondition('Polski',$this->Polski,true);





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


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


	return new CActiveDataProvider($this, array(


		'criteria'=>$criteria,


	));


}

to gdy wchodze na strone pokazuje pustą tabelę z nazwą kolumn i opisem "Nie znaleziono wyników." jeśli dam tłumacz to pokazuje całą baze jak dam dane słowo to je pokazuje tylko by było dobrze jakby nie pokazywał na starcie tabeli nawet jak pusta a dopiero po zapytaniu z wynikami i by wciśnięcie tłumacz bez danych nic nie pokazało.

Witam,

Jeżeli dobrze zrozumiałem to grid ma się nie wyświetlać jeżeli nie wpisano parametrów. Jedną z takich sytuacji będzie wejście na stronę.

Czy nie wystarczy żebyś zrobił ifa choćby w widoku, który sprawdzi czy któryś z parametrów został przekazany, jeżeli tak to wyświetlasz grida jeżeli nie to nic.

Dziekuje za informacje tylko musiałem zobaczyć jak w php i zarazem w yii to zrobić i mam rozwiązanie w widoku tzn administratora gdzie jest wygenerowana przez crud wyszukiwarka dodałem warunek if:

<?php if($_GET) {

   &#036;this-&gt;widget('zii.widgets.grid.CGridView', array(





'dataProvider'=&gt;&#036;model-&gt;search(),





'columns'=&gt;array(


	'Angielski',


	'Polski',


	array(


		'class'=&gt;'CButtonColumn',


		'template'=&gt;'{view}',


	),


),

)); }

?>

daje do taki wygląd jak oczekiwałem

6435

slowi.jpg

tylko jeszcze chciałbym by dopiero wartości się pojawiły po wpisaniu słowa z nimimum 2 znaków i naciśnięciu tłumacz a teraz nic nie podając klikam tłumacz i całą baze mi wrzuca na ekran.

Twój if sprawdza tylko czy jest $_GET, czyli tak naprawdę wciśnięcie przycisku bez wypełniania pól spełnia ten warunek co w konsekwencji wyświetla grida.

W moim odczuciu najlepszym rozwiązaniem będzie walidacja danych w modelu, tu jest opisane jak to można robić.

Przykłąd:





public function rules()

    {

        return array(

		array('Angielski', 'length', 'min' => 2),

		array('Polski', 'length', 'min' => 2),

        );

    }



Oczywiście powyższą walidację możesz np przeprowadzać tylko dla wyszukiwarki. Poczytaj o "scenario".