Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] formularze i nested tree
Forum PHP.pl > Forum > PHP > Frameworki
prohol
witam

W jaki sposob wykozystujac mechanizm nested tree dodac/zmienic pozycje w tabeli? Mecze sie juz z tym pare godzin i nic nie wychodzi:(. Mam formularz do edycji kategori - 2 pola: nazwa kategori oraz pole select ze wszystkimi kategoriami i jak dodaje nowa kategorie to chce ja umiescic w istniejacej juz kategori i nie chce mi to dzialac. Formularze wygenerowalem z cli. Obecnie klasa akacji wyglada tak:

  1. <?php
  2. class categoriesActions extends sfActions
  3. {
  4.  public function executeIndex(sfWebRequest $request)
  5.  {
  6.    $this->jmdata_categories_list = JmdataCategoriesPeer::doSelect(new Criteria());
  7.  }
  8.  
  9.  public function executeNew(sfWebRequest $request)
  10.  {
  11.    $this->form = new JmdataCategoriesForm();
  12.  }
  13.  
  14.  public function executeCreate(sfWebRequest $request)
  15.  {
  16.    $this->forward404Unless($request->isMethod('post'));
  17.  
  18.    $this->form = new CategoriesForm();
  19.  
  20.    $this->processForm($request, $this->form);
  21.  
  22.    $this->setTemplate('new');
  23.  }
  24.  
  25.  public function executeEdit(sfWebRequest $request)
  26.  {
  27.    $this->forward404Unless($jmdata_categories = CategoriesPeer::retrieveByPk($request->getParameter('id')), sprintf('Object jmdata_categories does not exist (%s).', $request->getParameter('id')));
  28.    $this->form = new CategoriesForm($jmdata_categories);
  29.  }
  30.  
  31.  public function executeUpdate(sfWebRequest $request)
  32.  {
  33.    $this->forward404Unless($request->isMethod('post') || $request->isMethod('put'));
  34.    $this->forward404Unless($jmdata_categories = CategoriesPeer::retrieveByPk($request->getParameter('id')), sprintf('Object jmdata_categories does not exist (%s).', $request->getParameter('id')));
  35.    $this->form = new CategoriesForm($jmdata_categories);
  36.    $this->processForm($request, $this->form);
  37.  
  38.    $this->setTemplate('edit');
  39.  }
  40.  
  41.  public function executeDelete(sfWebRequest $request)
  42.  {
  43.    ...
  44.  }
  45.  
  46.  protected function processForm(sfWebRequest $request, sfForm $form)
  47.  {
  48.    $form->bind($request->getParameter($form->getName()));
  49.    if ($form->isValid())
  50.    {
  51.      echo "poszlo";
  52.      $obj=$form->getObject();
  53.      var_dump($form);
  54.      if ($request->getParameter('categories') != 0) {
  55.        $parent_obj=CategoriesPeer::retrieveByPK($request->getParameter('categories'));
  56.        
  57.         $root = CategoriesPeer::getNode($parent_obj);
  58.         $new=new CategoriesPeer();
  59.         $new->insertAsLastChildOf($root);
  60.        
  61.      }
  62.     $jmdata_categories=$form->bindAndSave($values);
  63.      $this->redirect('categories/edit?id='.$jmdata_categories->getId());
  64.    } else {
  65.      echo "nie poszlo";
  66.    }
  67.  }
  68. }
  69. ?>



Rzecz wedlug mnie rozchodzi sie o metode processForm. Parametr 'categories' jest id wybranej kategori ktora ma sie stac rodzicem dla nowo zapisywanej. Nie wiem jak jak to zrobic. Probowalem zrobic to tak jak w tym poscie http://forum.symfony-project.org/index.php/m/65089/ ale niestety nie dziala. Prosze o pomoc.
Lonas
  1. <?php
  2. $parent_obj=CategoriesPeer::retrieveByPK($request->getParameter('categories'));
  3.      
  4.        $new=new Categories();
  5.        $new->insertAsLastChildOf($parent_obj);
  6. ?>


Jeszcze pytanie czego używasz do obslugi drzew ? jeżeli masz symfony 1.2 to plugin nestedset nie działa. Ale możesz użyć obsługi drzew z propela który jest w symfony 1.2
http://propel.phpdb.org/trac/wiki/Development/NestedSet
prohol
dzieki lonas dziala!

ps. Uzywan wlasnie symfony 1.2.4 i nestedset z propela 1.3.
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.