Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony3] Błąd konstruktora, serwisu w Symfony3
Forum PHP.pl > Forum > PHP > Frameworki
wluczykuj
Cześć, co może być nie tak?
w moim kodzie mam osobno formularz, kontroler i serwis


formularz: https://pastebin.com/ERU6hChv
kontroler: https://pastebin.com/FMzJ493v
serwis: https://pastebin.com/Cd7FL333

niestety mam błąd:

"Warning: Missing argument 1 for AppBundle\Form\PrzydzialType::__construct(), called in G:\Xampp\htdocs\projects\godziny_inz\vendor\symfony\symfony\src\Symfony\Component\Form\FormRegistry.php on line 85 and defined"

Stack Trace:

"in src\AppBundle\Form\PrzydzialType.php at line 64"

return 'appbundle_przydzial';
}

public function __construct($session)
{
$this->session = $session; <----------64 linia
ohm
W kontrolerze zamiast
  1. $form = $this->createForm('AppBundle\Form\PrzydzialType', $przydzial);

wrzuć
  1. $form = $this->createForm('app.form.przydzial_type', $przydzial);
wluczykuj
Okej, zmienilem i mam taki blad:

Could not load type "app.form.przydzial_type"

Stack Trace:

in vendor\symfony\symfony\src\Symfony\Component\Form\FormRegistry.php at line 87

if (class_exists($name) && in_array('Symfony\Component\Form\FormTypeInterface', class_implements($name))) {
$type = new $name();
} else {
throw new InvalidArgumentException(sprintf('Could not load type "%s"', $name)); <---linia 87
}
}

a w vendorze nie bardzo chce kombinowac bez konsultacji z kims bardziej doswiadczonym
nospor
vendorow sie nie dotyka i tyle.

W swoim pierwszy kodzie daj moze poprostu
PrzydzialType::class
zamiast tekstowej nazwy klasy. Wszystko oprocz tego robisz zgodnie z dokumentacja
ohm
sprawdź z konsoli czy masz na pewno dobrze zarejestrowany formularz
app/console debug:container
wluczykuj
Prawdopodobnie robię coś nie tak:

https://pastebin.com/4vZShwQ7


ok odpalilem te komende i jak mogę sprawdzic poprawnosc?

EDIT: przejrzalem cala liste form.type i nie bylo czegos takiego jak form.type.przydzial czyli tak jak w serwisie:

  1. # app/config/services.yml
  2. services:
  3. app.form.type.przydzial:
  4. class: AppBundle\Form\PrzydzialType
  5. arguments: ['@session']
  6. tags:
  7. - { name: form.type }
ohm
Wygląda jak by serwis nie był dołączany, cache czyściłeś? Pracujesz na wersji dev?
wluczykuj
no czyszczę cache, to jakiej mam dokladnie komendy użyć do czyszczenia?
nospor
Wracajac do mojej odpowiedzi to mi chodzilo bys dodac to ::class w kontrolerze tam gdzie wolasz createForm
wluczykuj
Kiedy daję w kontrolerze

  1. $form = $this->createForm('PrzydzialType::class', $przydzial);


lub

  1. $form = $this->createForm(PrzydzialType::class, $przydzial);


to mimo wszystko mam dla powyzszych kodow bledy odpowiednio jak wyżej:


Could not load type "PrzydzialType::class" i Could not load type "AppBundle\Controller\PrzydzialType"
ohm
W przypadku tego drugiego, to w grupie use dodaj (pierwszy jest nieprawidłowy wink.gif )
use AppBundle\Form\PrzydzialType ewentualnie

$form = $this->createForm(\AppBundle\Form\PrzydzialType::class, $przydzial);
wluczykuj
Coś faktycznie uległo zmianie:

mam inny blad: You have requested a non-existent service "app.form.type.przydzial"

czy ja aby na pewno dobrze mam to ponazywane bo przyznam ze już nie jestem pewien, rzuć okiem proszę, sorry ze o taka podstawe pytam ale mecze sie z tym juz ktorys dzien:

  1. services:
  2.  
  3. app.form.type.przydzial:
  4. class: AppBundle\Form\PrzydzialType
  5. arguments: ['@session']
  6. tags:
  7. - { name: app.form.type.przydzial }



i wycinek kontrolera: http://imgur.com/a/bUh1M
ohm
Sprawdz czy w config.yml masz importowany services.yml, ewentualnie przerzuć te deklaracje do configu samego bundla w AppBundle/Resources/services.yml

Co do czyszczenia cache, to app/console cache:clear lub (lub bin/console - zalezy jaką wersję symfony masz)
wluczykuj
w config.yml mam import services.yml,

a nazwa serwisu ktora potem daje w formularzu się zgadza?


EDIT: ciągle ten sam błąd, robie zgodnie ze wskazowkami, czyszcze cache, może czegoś nie zauważam, gdzies popełniam błąd?
ohm
Wrzuć gdzieś paczke z kodem to sprawdzę
wluczykuj
w całosci to jest dosc obszerne wiec jakie pliki wybrac do wysłania?
ohm
najlepiej wszystko bez app/config/parameters.yml, app/cache (lub var/), no i bez vendor oczywiście.
wluczykuj
Ok, podesłałem w wiadomości (na skrzynke) kod i bardzo proszę zobacz co z tym serwisem nie działa?

ostatecznie services.yml mam w dwóch miejsach w app/config i w src/appbundle/resources/config

gdyby brakowało jakiś plików to prosze o taką informację



EDIT:

W tym kodzie ustawiam sesję (zmienna sesyjna, ktorej chce potem uzywac w dalszej czesci aplikacji):
https://pastebin.com/KiZtLgmh

i potem gdy np. robie dump tej odebranej sesji w metodzie:
  1. public function listAction(Request $request){
  2. $plachta = $request->getSession()->get('plachta');


to mam wynik dumpa taki:
Zdjęcie1
http://imgur.com/a/7woPV i to do tej pory się zgadzalo




natomiast w poniższym kodzie w linijce 25 jest brana sesja (chce tę samą co ustawiam w pierwsyzm podeslanym linku) i gdy robie dump($session) to mam taki wynik jak ponizej, a powinien byc chyba taki jak na wczesniejszym zdjęciu.

https://pastebin.com/VckDkmAR

http://imgur.com/a/kkTuP


Jak odebrać te sesje jak w listAction() zeby bylo jak na Zdjęciu1 i to na niej pracowac? Czyli jak zrobić te pole w formularzu
->addPracownik('pracownik') aby byla to dropdown lista z listą pracowników tylko takich, którzy mają identyfikator FK $idPlachta równy tej sesji co przychodzi, (czyli w zalezności jakai identyfikator przyjdzie w sesji tacy ludzie mają się wyświetlac w dropdown list)
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.