Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] widget propelchoicemany
Forum PHP.pl > Forum > PHP > Frameworki
jarre1987
Witam,

Mam we formularzu widget propelchoicemany ktory generuje liste wielokrotnego wyboru. Chcialbym pobrac tablice zaznaczonych pozycji tak bym mogl zapisac tyle rekordow nowych w bazie, ile jest zaznaczonych pozycji. Dodam, ze to wszystko chce zrobic w metodzie processForm():

  1. <?php
  2. foreach($form->getValue('id_user') as $id_user)
  3.        {
  4.            
  5.                $user = new TpInvitedParty();
  6.                $user->setIdUser($id_user);
  7.                $user->setFromWho($this->getUser()->getGuardUser()->getId());
  8.                $user->setParty($party->getId());
  9.                $user->save();
  10.  
  11.        }
  12. ?>


Niestety nie dziala mi powyzsze rozwiazanie. Wydaje mi sie ze nie zwraca wogole tablicy zaznaczonych pozycji.

W jaki sposob pozyskac ta tablice z widgetu we formularza ?
thomas2411
Ten kod wydaje mi się dobry, używam taki sam i u mnie działa. A pokaż wcześniejszą część, jak pobierasz info o formualrzu...Wklej całe processForm
jarre1987
Cytat(thomas2411 @ 29.06.2009, 13:32:54 ) *
Ten kod wydaje mi się dobry, używam taki sam i u mnie działa. A pokaż wcześniejszą część, jak pobierasz info o formualrzu...Wklej całe processForm


metoda processForm

  1. <?php
  2. protected function processForm(sfWebRequest $request, sfForm $form)
  3.  {
  4.    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
  5.    if ($form->isValid())
  6.    {
  7.    
  8.        $party = TpPartyPeer::getParty($token = $request->getToken());
  9.    
  10.      foreach($form->getValue('id_user') as $id_user)
  11.        {
  12.            
  13.                $user = new TpInvitedParty();
  14.                $user->setIdUser($id_user);
  15.                $user->setFromWho($this->getUser()->getGuardUser()->getId());
  16.                $user->setParty($party->getId());
  17.                $user->save();
  18.        }
  19.  
  20.      $this->redirect('invite');
  21.    }
  22.  }
  23. ?>



i formularz:

  1. <?php
  2. class InvitePartyForm extends BaseTpInvitedPartyForm
  3. {
  4.    public function configure()
  5.    {
  6.        unset($this['accept'], $this['deleted'], $this['party'], $this['from_who']);
  7.        
  8.        if(sfContext::hasInstance())
  9.        {
  10.            
  11.            $this->widgetSchema['id_user'] = new sfWidgetFormPropelChoiceMany((array('model' => 'FriendsView', 'add_empty' => false, 'criteria' => FriendsViewPeer::getFriendsView($id = intval(sfContext::getInstance()->getUser()->getGuardUser()->getId())), 'key_method' => 'getIdFriend', 'multiple' => true )));
  12.            
  13.            $this->validatorSchema['id_user'] = new sfValidatorPropelChoiceMany(array('model' => 'FriendsView', 'criteria' => FriendsViewPeer::getFriendsView($id = intval(sfContext::getInstance()->getUser()->getGuardUser()->getId())), 'multiple' => true));
  14.        
  15.        }
  16.    }
  17.    
  18. }
  19. ?>



Zrobilem mala probe i doszedlem do tego, ze przy zastosowaniu: $form->getValue('id_user') nie zwraca nic. Natomiast gdy zastosuje $form->getWidget('id_user')->getChoices() zwraca mi " Array ". Nie wiem co jest grane..;/

Warto bylo posiedziec. Odpowiedz jest banalna!

otoz jak sie okazuje zmieniajac widget z propelchoicemany na PROPELCHOICE z opcja multiple=>true wszystko działa i zapisuje tyle rekordow, ile jest zaznaczonych pozycji w liscie...
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.