Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Jak wpisać w pole formularza domyślną?
Forum PHP.pl > Forum > PHP > Frameworki
tjaden
Wiem ,że wpisanie w pole formularza wartości domyślnej trudne nie jest, można to zrobić np w bazie danych, ale mi chodzi raczej o sytuację w której, w przypadku gdy użytkownik nie wpisze pole określonej wartości, do bazy trafi wartość domyślna.

Konkretnie chodzi mi o sytuację, gdy wpisując post na forum użytkownik nie wpisze swojego nicka wówczas chcę do bazy przekazać jego IP jako nick.
MateuszS
zaden problem, przykladowo jezeli mamy taki formularz

  1. <form action="index.php" method="POST">
  2. Ulubiony kolor: <input type="text" name="kolor" /><br />
  3. <input type="submit" value="rejestruj" />
  4. </form>


zalozmy wiec zepole ulubiony kolor nie jest wymagane, wtedy latwo w php piszemy warunek

  1. if(empty($_POST['kolor'])) {
  2. $kolor='nie wybrano';
  3. }
  4. //mozemy nie wybierac koloru, po czym wysylamy to do bazy, mozna tak samo zrobic z IP i nickiem.
  5.  
-=Peter=-
Jedno z rozwiązań, które mi się nasuwa, to napisanie specjalnego walidatora, który pełniłby rolę filtra.

Przykładowo:

  1. class myValidatorDefault extends sfValidatorBase{
  2. //ustawiasz w konstruktorze wartość domyślną
  3. private $default;
  4.  
  5. protected function doClean($value){
  6. if(is_null($value) || strlen((string)$value) == 0){
  7. $value = $this->default;
  8. }
  9.  
  10. return $value;
  11. }
  12. }


Do formularza poprzez konstruktor podajesz obiekt requestu (z którego wyciągasz IP) lub sam numer IP, a w configure w formularzu tworzysz ten walidator przekazując numer ip jako parametr domyślny. Może rozwiązanie lekko na około i może taka możliwość jest już obsługiwana w formularzach, ale z symfony nie mam wiele do czynienia przez ostatnie miesiące ;]
Gribo
a ja bym nadpisał metode doSave i tam sprawdził sobie czy koles wpisał ten nik podajze jest polecenie $this->getValue('login')==null jeśli prawda to pobieram ip kolesia zapisuje w pole login
tjaden
wiem jak sprawdzić wartość pola ( tak jak pisałeś przez getValue() ) i na tym etapie wszystko działa, jednak nie wiem jak zapisać wartość w polu, nie ma takiej funkcji jak setValue(), chyba spróbuję przez walidację jak to ktoś wyżej napisał
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.