Witajcie mirki!

Mam na stronce formularz. W moim głównym formularzu tworzę 3 formularze używając CollectionType. W tym podformularzu zbieram liczby. Suma liczb ma być nie większa niż 100.
W kontrolerze sprawdzam, czy suma jest >100, jeżeli jest większa, to chciałbym do formularza dodać błąd, żeby poinformować użytkownika o tym. Niestety nie wiem jak dodać błąd do pola podformy. Może ktoś coś może mi podpowiedzieć?

Tak pobieram formularz:

$project_annex_users = $form->get('project_annex_users')->getData();
tak pobieram
@mariecziek: Możesz walidować poszczególne pole lub cały obiekt. Nawet jak walidujesz pole, masz dostęp do obiektu. Jak masz collection to wywołujesz jedynie odpowiedniego geta, zwróci tablice obiektów (bo dane przed walidacją zostały już zbindowane na obiekt) i będziesz mógł wykonać foreacha i policzyć co trzeba.

Generalnie controllery powinny być chude, cała walidacja powinna być w Type'ie (formularzu: AbstractType) i pochodnych mechanizmach np. constraint'cie. Samo isValid() powinno zwracać odpowiednie komunikaty.

Potencjalnie dobry
  • Odpowiedz
Dlaczego tak dużo osób upiera się przy produkowaniu encji z formularzy? Dlaczego tak ciężko was przekonać, że przyjęcie danych z formularza może się odbyć rozłącznie w stosunku do utworzenia encji, na podstawie przekazanego do factory DTO? :D Nie kumam.

#php #symfony2
@uirapuru: Można jak najbardziej przez DTO. Ale jeżeli to formularz, który po prostu uzupełnia pola encji, to tworzenie tego przez DTO wymaga więcej wysiłku przy implementacji nie dając nic w zamian.
  • Odpowiedz
Czuję się jak ostatni lamus :( Jak noobek mam problem z utworzeniem encji.

Encja zawiera relację m2m, jednostronnie.

/**
* @ORM\ManyToMany(targetEntity="ProductFeature")
* @ORM\JoinTable(name="product__products_features",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="icon_id", referencedColumnName="id")}
* )
*/
private $features;

Jest wpięta w formularz, tam siedzi kolekcja. Kolekcja jest ładnie handlowana na froncie. Kontroler wchodzi w handleForm i... w ArrayCollection (na etapie $form->isValid() czyli kolejna linijka) pojawia się jakaś pusta tablica z dupy (screenshot). Przez
lewakanieszkoda - Czuję się jak ostatni lamus :( Jak noobek mam problem z utworzeniem...

źródło: comment_0d7sHdsRBMFtOyLJ7DOjRPbnINGady7d.jpg

Pobierz
@qwelukasz: Dziwne pytanie. Po prostu zrób dwa różne formularze. A jak nie chcesz powtarzać kodu to dodaj argumenty w konstruktorze, które decydować będą o tym, czy pole hasła jest wymagane.

Tak na marginesie, to pole zmiany hasła powinno wymagać podania starego hasła, żeby ktoś nie przejął użytkownikowi konta siadając na 5 sekund do jego komputera.
  • Odpowiedz
@qwelukasz:

1. Potwierdzam, że powinieneś wymagać starego hasła przy zmianie na nowe
2. Możesz przekazać do formularza info czy ma być wymagane: $form = $this->createForm(YourFormType::class, null, ['password_required' => true]); – przekazujesz wartość w zależności od tego jaką masz akcję.
  • Odpowiedz
#symfony #symfony2 #symfony3 #doctrine #php

Jak escapować dane? Potrzebuję wykorzystywać natywne zapytania sql i nie mam jak escpaować danych.
Bindowanie raczej odpada, a mysqlescapestring nie istnieje w php7. mysqlrealescape_string wymaga z kolei połączenia, a tego wyciągnać od Doctrine się chyba nie da po dobroci, bo tam PDO siedzi zaszyte gdzieś?
@DobryProgramista: PHP7 + Symfony 2/3 i to całkiem spoko rozwiązanie moim zdaniem. Mi się dobrze w Symfony pisze, jest mnóstwo bundli i tutoriali.

Jeśli zastanawiasz się między wersją 2 a 3, to bierz 3. Nie ma diametralnych różnic które wymagałby nauki od nowa.
  • Odpowiedz
Witajcie mirki.
Mam problem z przekazaniem danych z DB do widoków. Problem polega na formatowaniu tekstu. W bazie danych mam JSON, a w JSONie taki łańcuch znaków:

"items":[["$[(-\infty; 3]]$","false"],["$[(-1,5; +\infty)]$","true"],["$[(-\infty; -1,5)]$","false"],["$[(-\infty; -1,5]]$","false"]],
Gdy pobieram dane z bazy danych, otrzymuję tablicę, w której wartości przyjmują taki format:

$[(-\infty; -1,5]]$
Problem jest w tym, że do widoku muszę to przekazać znowuż w JSONie w takim formacie:

$[(-\infty; -1,5]]$
W jaki sposób zrobić tak, by
Hej mireczki, mam mały problem w symfony.
Jak sprawdzić w walidatorze czy wprowadzony w formie input nie zawiera tagów html? Chcę, żeby wywalał error kiedy ktoś doda jakieś tagi. Czy trzeba napisać swojego własnego Constrainta i tam coś kombinować?
#symfony #symfony2 #symfony3 #php
@Marekexp: Czemu chcesz zabraniać HTMLa? Po prostu zawsze prawidłowo escape'uj przy prezentowaniu (Twig automatycznie escape'uje dla HTMLa).

Załóżmy, że Wykop zabroniłby wstawiania HTMLa we wpisach. Nie mógłbym wtedy napisać tego (a mogę, bo Wykop prawilnie escape'uje na wyjściu, zamiast kastrować na wejściu):

Hello World!
  • Odpowiedz
Jestem noobem, ale chce od czegos zaczac. Podstawy programowania znam. C#/CPP, WebDev... Chcialem zaczac od frameworka Symfony, ale tutaj juz mam klode pod nogami...

`[InvalidArgumentException]
The file "filters/assets.xml" does not exist (in: C:\xampp\htdocs\1\vendor\
symfony\assetic-bundle\DependencyInjection/../Resources/config).
`


#webdev #symfony2 #web
#symfony2 #symfony #php
Jeśli macie zrobić stronę na której admin będzie miał możliwość ustawienia różnych opcji, np co ile Odświeżac dane, albo domyślna liczba rekordów na stronę, albo jakiś opcje dodatkowe to jak je otrzymacie w bazie? Tabela opcje z polami nazwa/ wartość + walidacja dla każdej możliwej opcji no żeby ktoś nie podał syringa w miejsce int) czy jakoś inaczej?
@qwelukasz: ja mam tabelkę jak poniżej. Type to jest nr typu zdefiniowanego. Wtedy zależnie od ID wyświetlam konkretny input (czy to int, float , text, url, path, file itp)

W poprzedniej wersji miałem pole group, które było przypisane dla grupy. Czyli jesli group miało null, wtedy to była wartosc domyslna, a pozniej te pole było nadpisywane, jesli byla duplikacja rekordu ale z uzupelnionym polem grupy (czyli po prostu grupy uzytkownikow mogly
K.....a - @qwelukasz: ja mam tabelkę jak poniżej. Type to jest nr typu zdefiniowanego...

źródło: comment_9N8TS9Zesq8Pw67D4Awrfv7QmEuh8GdR.jpg

Pobierz
  • Odpowiedz
Witajcie mirki z #php.

Nawarzyłem sobie bigosu iteraz muszę sobie z tym radzić… ( ͡° ͜ʖ ͡°)

Mam na stronie sklep. Podczas składania zamówienia zapisuję w tabeli każdy produkt z osobna (tak wydawało mi się łatwiej). Ale teraz muszę zrobić w podsumowaniu zamówienia tak, żeby jeżeli produkt się powtarza, to mam po prostu zwiększyć ilość, a nie wyświetlać oddzielnie.
Teraz mam tak:

zamowienie_produkt.id | ilosc
1 |
mariecziek - Witajcie mirki z #php.

Nawarzyłem sobie bigosu iteraz muszę sobie z t...

źródło: comment_YtxbH8YmLFIS7YhFGtzLzaZZJFEQXHIq.jpg

Pobierz
#symfony2 #symfony3

takie pytanie:
tworze jakąs tam funkcje w osobnym pliku JS która wywołuje jakieś tam polecenia AJAX'em.
Jak przekazujecie URL do tej funkcji?
Czy taka funckje tworzycie w twig-u czy może jako URL podajecie zmienna którą później definiujecie w twigu?
Przesiadka z #laravel na #symfony2 - na co zwrócić uwagę? Co jest podobnego, a co czyni z tych frameworków ogień i wodę? Laravel to mój główny framework, pobocznie używam Zenda, ale nadchodzi projekt w Symfony i... jak to ugryźć, na czym się skupić?
#php #webdev
na co zwrócić uwagę


Zwróć uawgę na sam kod Symfony ( ͡° ͜ʖ ͡°) : jest to jeden z najlepiej napisanych (jezeli nei najlepiej) projektów w PHP,.poczynając od mnóstwa wzorców projektowych zastosowanych z głową, poprzez niezłą dokumentacje i.cookbooka.

Na pewno kluczowym elementem w pisaniu dobrego, przenośnego kodu w symfony jest ogarnięcie ichniego DI, które jest świetne - acz jego nieumiejętne wykorzystanie może znacznie spowolnić aplikację..
  • Odpowiedz
Mireczki postanowiłem przetestować #docker z symfony 2.8 na Windows 7

Chciałem użyć tego obrazu dla wystartowania kontenera.
Po wpisaniu docker-compose up mam bląd

Error for symfony Container command '/entrypoint.sh' could not be invoked.
Nie wiecie jak sobie z tym poradzić ?
#symfony #symfony2
Muszę pobrać dane z bazy danych i mam pewien problem. W bazie danych mam tabelkę użytkowników i szkół. Użytkownik może mieć wiele szkół. Muszę więc wyświetlić na stronie, do jakich szkół należy ten użytkownik. Jeżeli piszę zwykły select:
SELECT f0.id as id0,
f0.roles AS roles0,
f0.firstname AS firstname1,
f0.lastname AS lastname2,
f0.email AS email3,
f0.created AS created