Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Osobna walidacja dla różnych szablonów jednego modułu?
Forum PHP.pl > Forum > PHP > Frameworki
Foxx
Witam,
czy jest możliwe stworzenie innych reguł walidacji formularza w obrębie jednego modułu (i jednej akcji) w zależności od tego, który szablon został wczytany dla modułu?
Cysiaczek
Chyba nie, zwłaszcza, że szablon jest wybierany już po uruchomieniu akcji, a jej walidacja przed.
Foxx
Szkoda, to znaczy że nie można mieć dwóch szablonów w jednym module jeżeli różnica między nimi dotyczy walidowanego pola formularza (np. w jednym może nie być wymaganego pola i ciągle będzie błąd required)?
arecki
Możesz sobie napisać własny walidator który na podstawie jakiegoś ukrytego pola w którym będziesz trzymał nazwę szablonu walidował pole lub nie.
AxZx
można różne widoki i różne pliki walidacji przypisać do jednej akcji.

mając akcję executeEdytuj, trzeba napisać metodę validateEdytuj
  1. <?php
  2. public function validateEdytuj()
  3.    {
  4.        $validated = true;
  5.        if($this->getRequest()->getMethod() == sfRequest::POST)
  6.          {
  7.            $validationConfig = $this->getModuleName().'/'.sfConfig::get('sf_app_module_validate_dir_name').'/'.$this->getRequestParameter('nazwa_widoku').'.yml';
  8.            if (null !== $validateFile = sfConfigCache::getInstance()->checkConfig(sfConfig::get('sf_app_module_dir_name').'/'.$validationConfig, true))
  9.            {
  10.                $context = $this->getContext();
  11.                $validatorManager = new  sfValidatorManager();
  12.                $validatorManager->initialize($context);
  13.                require($validateFile);
  14.                $validated = $validatorManager->execute();
  15.            }
  16.          }
  17.          return $validated;
  18.    }
  19. ?>


w miejscu $this->getRequestParameter('nazwa_widoku') musisz wstawić nazwę tego widoku. jakoś z tym pokombinować:)
Foxx
Dzięki
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.