• 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

Object Storage Arubacloud
–1 głos
349 wizyt
pytanie zadane 24 lipca 2016 w PHP przez niezalogowany
edycja 24 lipca 2016

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ź

+1 głos
odpowiedź 24 lipca 2016 przez efiku Szeryf (75,160 p.)
edycja 24 lipca 2016 przez efiku

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 niezalogowany

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,940 p.)

Witam, mam taką classe:

Klasę.

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

Static.

Podobne pytania

0 głosów
1 odpowiedź 283 wizyt
pytanie zadane 12 kwietnia 2018 w PHP przez niezalogowany
0 głosów
1 odpowiedź 191 wizyt
pytanie zadane 4 kwietnia 2017 w C i C++ przez Ehlert Ekspert (212,670 p.)
0 głosów
0 odpowiedzi 100 wizyt
pytanie zadane 21 sierpnia 2018 w PHP przez zirael [PL] Mądrala (5,200 p.)

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...