Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Jak w symfony 1.1 wstawić wartość w pojedyńcze pole w form?
stachuf11
post 14.11.2008, 11:51:53
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

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


Witam
Chodzi mi o symfony 1.1
mam w katalogu lib/forms/base/ plik
o nazwie BaseAktywnyForm.class.php

w nim jest standardowa tresc

  1. <?php
  2. class BaseAktywnyForm extends BaseFormPropel
  3. {
  4.  public function setup()
  5.  {
  6.    $this->setWidgets(array(
  7.      'id'        => new sfWidgetFormInputHidden(),
  8.      'kolejnosc' => new sfWidgetFormInput(),
  9.      'nazwa'     => new sfWidgetFormInput(),
  10.    ));
  11.  
  12.    $this->setValidators(array(
  13.      'id'        => new sfValidatorPropelChoice(array('model' => 'Aktywny', 'column' => 'id', 'required' => false)),
  14.      'kolejnosc' => new sfValidatorInteger(array('required' => false)),
  15.      'nazwa'     => new sfValidatorString(array('max_length' => 100, 'required' => false)),
  16.    ));
  17.  
  18.    $this->widgetSchema->setNameFormat('aktywny[%s]');
  19.  
  20.    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
  21.  
  22.    parent::setup();
  23.  }
  24.  
  25.  public function getModelName()
  26.  {
  27.    return 'Aktywny';
  28.  }
  29.  
  30. }
  31. ?>


czyli standart, ma trzy pola id, nazwa, kolejnosc

teraz w kontrolerze mam taką akcję przy update
  1. <?php
  2. $this->form->bind($request->getParameter('aktywny') );
  3. ?>

czyli wstawia wartosci pobrane z pol edycyjnych do odpowiednich pół w $this->form

gdy chcę swoją wartość wstawić w jakiejs pole to robie np

  1. <?php
  2. $tabela=array('kolejnosc'=>2,'nazwa'=>'kot');
  3. $this->form->bind($tabela);
  4. ?>


i też mi zadziała

ale czy jest inna metoda, aby do pojedyńczego pola w obiekcie $this->form wstawić wartość,
cos typu

  1. <?php
  2. $this->form->setKolejnosc(4);
  3. ?>


proszę o pomoc
pozdrawiam

Ten post edytował stachuf11 14.11.2008, 12:15:42
Go to the top of the page
+Quote Post
destroyerr
post 14.11.2008, 12:37:23
Post #2





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

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


Ciężko się domyśleć jaki masz cel. W ten sposób nie da się zrobić, ponieważ funkcja bind wykonuje od razu walidacje. Możesz dla konkretnego pola ustawić wartość domyślną, przez funkcje setDefault.
Go to the top of the page
+Quote Post
stachuf11
post 14.11.2008, 13:18:31
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

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


no rozumie, a jest takie cos jak

  1. <?php
  2. $this->form->getObject()->setKatalogwobiekcie('jacek');
  3. ?>


i ustawia wartosc, ale mimo zapisu
  1. <?php
  2. $this->form->save();
  3. ?>


wartosc ta nie przechodzi do bazy, co zrobic aby przeszla wartosc z obiektu $this->form->getObject() do $this->form;
Go to the top of the page
+Quote Post
destroyerr
post 14.11.2008, 14:08:22
Post #4





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

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


To jeszcze podaj w którym momencie ustawiasz tą wartość dla obiektu.
Go to the top of the page
+Quote Post
stachuf11
post 14.11.2008, 14:24:33
Post #5





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

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


no tak
  1. <?php
  2. $this->form->getObject()->setKatalogwobiekcie('jacek');
  3. $this->form->save();
  4. ?>


ale to nie zapisuje do bazy, jak zrobic aby zapisalo do bazy
Go to the top of the page
+Quote Post
destroyerr
post 14.11.2008, 14:56:43
Post #6





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

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


Jest na to kilka sposobów.
  1. <?php
  2. $this->form->updateObject();
  3. $object = $this->form->getObject();
  4. $object->setKatalogwobiekcie('jacek');
  5. $object->save();
  6. ?>


Możesz nadpisać metode save swojego formularza a już najlepszym wyjściem byłoby zastanowić się czy nie da się przenieść tego z akcji do formularza. To uprości kontroler.
Go to the top of the page
+Quote Post
stachuf11
post 14.11.2008, 19:28:21
Post #7





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

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


tak, o to chodziło, działa jak trzeba
pozdrawiam

Ten post edytował stachuf11 14.11.2008, 20:38:25
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 07:09