• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Classa, funkcja statyczna, twig - nie potrafię wywołać funkcji

–1 głos
88 wizyt
pytanie zadane 24 lipca 2016 w PHP, Symfony, Zend przez GenerałXavi Stary wyjadacz (11,180 p.)
edycja 24 lipca 2016 przez GenerałXavi

Witam, mam taką classe:

class Validator{

    public static function Blank($field){

        if(strlen($field) > 1){
          return true;
        }else{
          return false;
        }
    }
  }

Sprawdza ona czy dana wartość posiada ciąg znaków. Dane są te pobierane z formularza i wszystko działało poprawnie dopóki testowałem wszystko w pliku .php, bo wywoływałem ja w taki sposób: 

Validator::Blank($first_name)

 

Nie mam pojęcia jednak jak użyć tej funkcji w twigu, bo normalny sposób nie działa. Poszukałem trochę na internetach i wykombinowałem coś takiego:

$twig->addFilter('Validator::Blank()', new Twig_Filter_Function('Blank'));

Jednak wywołanie funkcji w Twigu nie działa:

{% if Blank('first_name') == true %}

   prawda

{% endif %}

Jeśli chodzi o błędy, to dostaję informację zwrotną, że nie ma takiej funkcji jak Blank. 

 

Jeśli chodzi o to jak renderuję twiga, to wygląda to tak:

  echo $twig->render('dodaj_pracownika.html.twig', [
    'worker' => $worker, // obiekt, niezwiązany z problemem
    'first_name' => $first_name, // zmienna, jest ona przekazywana jako parametr
    'name' => $name, // zmienna
    'date_birthday' => $date_birthday, // zmienna
    'brand' => $brand, //zmienna

  ]);

 

Ostatnimi czasami poznałem dużo rzeczy i nie jestem jeszcze obyty w twigu ani w oop, więc nie potrafię rozwiązać tego problemu. Liczę na pomoc. Pozdrawiam

1 odpowiedź

+2 głosów
odpowiedź 24 lipca 2016 przez efik Maniak (71,070 p.)
edycja 24 lipca 2016 przez efik

Witam, mam taką classe:

Klasę.

Ta klasa nie robi nic szczególnego i ten static...

Lepiej zrobić anonimową funkcję filtrującą:

$filter = new Twig_SimpleFilter('blank', function ($string) {
    return  mb_strlen($string) != 0 ;
});

$twig->addFilter($filter);

{% if user.name|blank %}

 

No ale można też tak jeszcze prościej:
{% if  user.name is empty %}

http://twig.sensiolabs.org/doc/tests/empty.html


http://twig.sensiolabs.org/doc/tests/index.html

http://twig.sensiolabs.org/doc/advanced.html

http://symfony.com/doc/current/cookbook/templating/twig_extension.html

http://twig.sensiolabs.org/doc/filters/index.html

http://twig.sensiolabs.org/doc/templates.html

 

Podsumowując, szukałeś wszędzie tylko nie na oficjalnej dokumentacji :)

komentarz 24 lipca 2016 przez GenerałXavi Stary wyjadacz (11,180 p.)

Dzięki za linki. Jednak nie zgodzę się, że nie korzystałem z dokumentacji. :)

Myślałem o skorzystaniu z właściwości empty, ale właśnie chciałem to zrobić w sposób obiektowy. Bo wcześniej wszystko pisałem proceduralnie i myślałem, że się nauczę pisać obiektowo.

Ogólnie na początku robiłem wszystko w PHP i fajnie działało, a wyglądało to tak:

if (isset ($_POST['form'])){
    if(Validator::Blank($first_name)&& Validator::Blank($name) && Validator::Blank($date_birthday) && Validator::Blank($brand)){
      if ($worker->add_worker($first_name, $name, $date_birthday, $brand)){
          echo $worker->add_worker_complete();
      }
    }
    else{
        echo $worker->add_worker_fault();
    }
  }

Problemy pojawiły się właśnie, kiedy zacząłem to implementować do twiga, a musiałem bo np. chcę aby: 

echo $worker->add_worker_complete(); 

wyświetliło się w wybranym przeze mnie divie. 

komentarz 24 lipca 2016 przez smh Obywatel (1,960 p.)

Witam, mam taką classe:

Klasę.

Ta klasa nie robi nic szczególnego i ten statc...

Static.

Podobne pytania

0 głosów
3 odpowiedzi 128 wizyt
pytanie zadane 25 października 2015 w PHP, Symfony, Zend przez babiak Obywatel (1,830 p.)
0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 7 sierpnia 2015 w PHP, Symfony, Zend przez makoso Mądrala (7,420 p.)
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,606 zapytań

76,489 odpowiedzi

149,375 komentarzy

18,071 pasjonatów

Przeglądających: 318
Pasjonatów: 27 Gości: 291

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...