• 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

VPS Starter Arubacloud
–1 głos
342 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ź 281 wizyt
pytanie zadane 12 kwietnia 2018 w PHP przez niezalogowany
0 głosów
1 odpowiedź 190 wizyt
pytanie zadane 4 kwietnia 2017 w C i C++ przez Ehlert Ekspert (212,630 p.)
0 głosów
0 odpowiedzi 98 wizyt
pytanie zadane 21 sierpnia 2018 w PHP przez zirael [PL] Mądrala (5,200 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...