Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2] Problem z routingiem, Problem z przekazywaniem parametrów
pav
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


Witam,jestem początkujący w Symfony2, a wyskoczył mi problem, którego naprawdę nie wiem jak rozwiązać.

Podczas przekazywania parametrów wyskakuje mi błąd:

Cytat
Some mandatory parameters are missing ("idzwierzatka") to generate a URL for route "Admin_zwierze_edycja".



To link do przechodzenia do formularza edycja:

Cytat
<a href="<?php echo $view['router']->generate('Admin_zwierze_edycja', array('idzwierzatka' => $zwierzatka->getIdzwierzatka())); ?>">



tablica routingu:

Cytat
Admin_zwierze_edycja:
pattern: /admin/zwierze/edycja/{idzwierzatka}
defaults: { _controller: MultimediaAccountBundle:Admin:zwierzeEdycja}
requirements:
idzwierzatka: \d+



A to z controlera ( AdminController):

Cytat
public function zwierzeEdycjaAction(Request $request )
{
$idzwierzatka = $request->get('idzwierzatka' , '0');
$em=$this->getDoctrine()->getManager();

$zwierze = $em->getRepository('MultimediaAccountBundle:Zwierze')->find($idzwierzatka);

if (!$zwierze){
return $this->createForm(new ZwierzeType(), $zwierze);
}
$form = $this->createForm(new ZwierzeType(), $zwierze);
$em->flush();
return $this->render('MultimediaAccountBundle:Zwierze:edycja.html.php', array('form'=> $form->createView() , 'idzwierzatka'=>$idzwierzatka));

}



Zrzut z Entity Zwierze

Entity zwierze






Bardzo bym prosił o pomoc.

Dziękuje i pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
kropka89
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


przy każdym użyciu routera dajesz parametry (przekierowania, linki) ?
Go to the top of the page
+Quote Post
pav
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


@Kropka89

Tak, wyświetlę jeszcze jeden wpis:

Cytat
Admin_zwierze_nowy:
pattern: /admin/zwierze/nowy
defaults: { _controller: MultimediaAccountBundle:Admin:zwierzeNew }

Admin_zwierze_edycja:
pattern: /admin/zwierze/edycja/{idzwierzatka}
defaults: { _controller: MultimediaAccountBundle:Admin:zwierzeEdycja}
requirements:
idzwierzatka: \d+



@masteron
Po pojawieniu się listy zwierząt (zrobionej foreach, tabela), w każdym wpisie występują przyciski edytuj i usuń.

edytuj
Cytat
<a href="<?php echo $view['router']->generate('Admin_zwierze_edycja', array('idzwierzatka' => $zwierzatka->getIdzwierzatka())); ?>">


usuń:
Cytat
<a href="<?php echo $view['router']->generate('Admin_zwierze_usun', array('idzwierzatka' => $zwierzatka->getIdzwierzatka())); ?>">Usuń</a>



Problem w tym, że
Cytat
$zwierzatka->getIdzwierzatka()

wyświetla poprawne id dla każdego wpisu. Przekazywanie danych w URL też jest poprawne ( z rozpaczy podam link):

Cytat


Nawet rzutowanie do INT nie pomaga. Ciągle jest to samo.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Skoro rzuca Ci wyjątek, to będzie do niego dołączony backtrace, a w nim, na którymś tam miejscu będzie nazwa pliku szablonu i numer linii, które skutkują wyrzuceniem wyjątku - tam masz błąd.
Go to the top of the page
+Quote Post
pav
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


Pokazujące błędy:
1. Błąd:

Cytat
in C:\wamp\www\projekt\app\cache\dev\classes.php at line 1236

a 1236:

1235: if ($diff = array_diff_key($variables, $mergedParams)) {
1236: throw new MissingMandatoryParametersException(sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "',
1237: array_keys($diff)), $name));
1238: }



2.
Cytat
at UrlGenerator ->doGenerate (array('idzwierzatka'), array('_controller' => 'Multimedia\AccountBundle\Controller\AdminController::zwierzeEdycjaAction'), array('idzwierzatka' => '\d+'), array(array('variable', '/', '\d+', 'idzwierzatka'), array('text', '/account/admin/zwierze/edycja')), array(), 'Admin_zwierze_edycja', false, array())
in C:\wamp\www\projekt\app\cache\dev\appdevUrlGenerator.php at line 73



a ten błąd w rozwinięciu:
Cytat
71: list($variables, $defaults, $requirements, $tokens, $hostTokens) = self::$declaredRoutes[$name];
73: return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens);
74: }
75: }



Następny:


Cytat
at RouterHelper ->generate ('Admin_zwierze_edycja')
in C:\wamp\www\projekt\src\Multimedia\AccountBundle\Resources\views\Zwierze\edycja.html.php at line 8


który wygląda tak:
Cytat
<form action="<?php echo $view['router']->generate('Admin_zwierze_edycja') ?>" method="post" <?php echo $view['form']->enctype($form) ?> >


i wg. Netbean'sa błąd jest:
Cytat
Bad value " " for atribut action on element "form": DOUBLE_WHITESPACE in PATH
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?php echo $view['router']->generate('Admin_zwierze_edycja') ?>
No przecież wyraźnie brakuje tutaj wymaganego parametru idzwierzatka.
Cytat
i wg. Netbean'sa błąd jest:
Kod
Bad value " " for atribut action on element "form": DOUBLE_WHITESPACE in PATH
Ten błąd możesz zignorować. NetBeans nie wziął pod uwagę faktu, że ten plik zawiera wstawki PHP-owskie i traktuje go jak zwykły dokument HTML.
Go to the top of the page
+Quote Post
pav
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


@Crozin


Teraz zmieniłem zapytanie w
Cytat
//MultimediaAccountBundle:Uzytkownicy:edycja.html.php


na

Cytat
<form action="{{ path('Admin_uzytkownicy_edycja') }}" method="POST" {{ form_enctype(form) }}>


Błąd oczywiście zniknął. W AdminControllerze nic nie zmieniałem, a teraz po zatwierdzeniu wprowadzonych zmian wyskakuje nie poprawny link:


Cytat


Rozumiem, że przeszkadza mu {{{ path('Admin_uzytkownicy_edycja') }} tylko co ja mam tam wpisać, zeby dzialalo ? Setki prob i ciagle to samo.
Chyba ze w admin controllerze mam cos zmienic.


To są dopiero początki, dlatego proszę o pomoc.
Go to the top of the page
+Quote Post
destroyerr
post
Post #8





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Nie możesz w pliku php korzystać z Twiga, albo jedno albo drugie.
Go to the top of the page
+Quote Post
pav
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


@destroyerr

To jeśli dobrze rozumiem, mam wysłać mu wraz z parametrem, czyli jeśli wpisze:

Cytat
<form action="<?php echo $view['router']->generate('Admin_uzytkownicy_edycja', array('iduzytkownika'=>$entity->getIduzytkownika())); ?>" method="post" <?php echo $view['form']->enctype($form) ?>>




i w AdminController zmieniłem na:

Cytat
public function uzytkownicyEdycjaAction($iduzytkownika)
{

$em = $this->getDoctrine()->getEntityManager();

$entity = $em->getRepository('MultimediaAccountBundle:Uzytkownicy')->find($iduzytkownika);

if (!$entity) {
throw $this->createNotFoundException('Nie znaleziono danego ENTITY');
}

$form = $this->createForm(new UzytkownicyType(), $entity);
$em->flush();

return $this->render('MultimediaAccountBundle:Uzytkownicy:edycja.html.php' , array('form' => $form->createView() , 'iduzytkownika'=>$iduzytkownika));

}



Strona w ogóle nie chce się załadować...
Go to the top of the page
+Quote Post
destroyerr
post
Post #10





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


No to jeszcze przydałoby się wiedzieć co znaczy, że nie chce się załadować. Nie wiemy też czy na pewno korzystasz ze środowiska deweloperskiego.
W ciemno mogę tylko doradzić, abyś przejrzał logi Symfony i php/serwera.

  1. $em->flush();

Nie potrzebujesz flushować skoro niczego nie zmieniałeś.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 01:36