Temat: Pomocy !!! :(

Witam
Dopiero od niedawna bawię cakePHP i pewnie pytanie będzie banalne ale ja nie mogęsobie z tym poradzić sad
Mam formularz z polem powiedzmy 'username'. Każdy user może mieć dowolna ilość emaili
Na formularzu zrobiłem więc dwa pola do zapisywania maili i wrzucajać dane do bazy mam w jednej tabeli wpis username a w drugiej dwa rekordy z mailami przypisanymi do opowiedniego ID usera

Teraz smile chce aby można było dodać wiecej niż dwa maile i w tym celu napisałem funkcyjke w javascriptcie która mi dodaje kolejne pola 'input' do formularza' po dodaniu pola w źródle wyglądaja identycznie i maja kolejny indeks

ale jak klikne zapisz validowane są tylko dwa początkowe i te dwa sie zapisują
to dodane przez javasvript jest ignorowane
jeśli klikne raz jeszcze zapisz nieuzupełniajac pola username, które jest wymagene juz validuje mi 3

nie wiem jak sobie z tym poradzić
proszę o pomoc smile

z góry wielkie THX

2

Odp: Pomocy !!! :(

Pomysł na szybko - walidacja każdego pola z adresem mail ajax-em, po wyjściu z pola.

3

Odp: Pomocy !!! :(

Bez namiastki kodu zrodlowego bedzie ciezko mysle hmm

4

Odp: Pomocy !!! :(

pierwsza rzecz jaka mi przyszla do glowy :
1. stworz sobie plik app_model.php w katalogu 'app'
2. w tym pliku zdefiniuj nowa funckje do validacji emaili (a konkretnie tworzac ja zmieniasz standardowa funckje do validacji emaili )

function email($data) {
  // $data - tablica np. z emailiami, moze to byc $this->data['NazwaModelu']['email'][0]...[1]...[2]
  // sa to pola tworzone dynamicznie z przeslanych danych z widoku
 
  $check = true;
  foreach($data as $key => $thisEmail) {
    // poszczegolne kroki
    // 1. dla kazdego $thisEmail sprawdz czy to jest prawidlowy email, np. wyrazeniem regularnym
    // 2. jezeli nie jest przypisz wartosc false
  }
  return $check;
}
funckja email zwroci Ci wartosc zmiennej $check true albo false.
Dzieki temu bedziesz wiedzial czy przeslane emaile sa prawidlowe

mam nadzieje ze pomoze to ;-)

5

Odp: Pomocy !!! :(

Hola, hola smile
Jeśli user może mieć dowolną ilość emaili, to do tych emaili powinna być osobna tabela w bazie, a nie tylko dwie kolumny w tabeli user.

Wtedy problem się rozwiązuje, każdy user może sobie edytować listę emaili, które są walidowane, a CakePHP wspiera domyślnie takie połączenia.

Powiązania w modelu powinny być takie: email belongsTo user, user hasMany email.

6

Odp: Pomocy !!! :(

Tony napisał/a:

Hola, hola smile
Jeśli user może mieć dowolną ilość emaili, to do tych emaili powinna być osobna tabela w bazie, a nie tylko dwie kolumny w tabeli user.

Wtedy problem się rozwiązuje, każdy user może sobie edytować listę emaili, które są walidowane, a CakePHP wspiera domyślnie takie połączenia.

Powiązania w modelu powinny być takie: email belongsTo user, user hasMany email.

Wygląda na to, że są już dwie tabele.

karolio007 napisał/a:

[...]
Każdy user może mieć dowolna ilość emaili
Na formularzu zrobiłem więc dwa pola do zapisywania maili i wrzucajać dane do bazy mam w jednej tabeli wpis username a w drugiej dwa rekordy z mailami przypisanymi do opowiedniego ID usera
[...]

7

Odp: Pomocy !!! :(

Zgadza się, oczywiście, przepraszam za zamieszanie.

Więc w takim razie albo pójść na łatwiznę i adresy po drugim dodawane byłyby z przeładowaniami (np. także po dwa) lub musiałbyś zapoznać się z użyciem Ajax w CakePHP, tutorial to do list z ajax jest np. tutaj: http://cakeforge.org/projects/tohdoh/