Szukam funkcji odwrotnej do unique na potrzby resetownia hasla. W widoku "forgotpassword" niezalogowany uzytkownik wpisuje address e-mail i w kontrolerze chcilabym sprawdzic czy podany e-mail jest w bazie czy nie, jesli tak kontynuje proces resetu hasla, jesli nie ma to wyswietla info. Przy pomocy podanej wyzej funkcji nie wyswietli mi erroru, wiec szukam czegos w stylu !unique.
Yii chyba takiej funkcji nie oferuje jednak… jak narazie korzystam z wlasnej funcji, ale gdyby ktos z Was na cos wpadl to prosze o info. Poki co tak to wyglada( wszelkie sugestie mile widziane):
public function hasEmailBeenUsed($attribute, $params){
$email = $this->$attribute;
$sql = "SELECT email FROM users WHERE email = '$email'";
$result = Yii::app()->db->createCommand($sql)->execute();
$message = $this->$attribute.' does not exist.';
if(!$result)$this->addError($attribute, $message);
}
Tutaj mnie zaciekawiles. Przyznaje ze nie zastanawialem sie nad odzielnym modelem dla resetowania hasla. Myslalem ze uzycie scenariusza wystarczy. Model uzytkonika zostal stworzony przy uzyciu gii, ktore tez samo wygenerowalo zasady dla hasla. Wydawalo mi sie ze w obecnym modelu przewidzialem wiekszosc mozliwych systucji. Moglbys mi przyblizyc dlaczego uwazasz ze reset hasla powinien miec wlasny model?
Modele bazujące na AR służą do modyfikacji danych. Ten formularz nie modyfikuje danych, wrzucając do niego takie reguły tylko niepotrzebnie go komplikujesz. Zobacz jak wygląda domyślny formularz logowania - to jest osobny model, bo służy tylko do walidacji wprowadzonych danych, które nigdzie nie są zapisywane.