Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Jak w symfony 1.1 wstawić wartość w pojedyńcze pole w form?
Forum PHP.pl > Forum > PHP > Frameworki
stachuf11
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
destroyerr
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.
stachuf11
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;
destroyerr
To jeszcze podaj w którym momencie ustawiasz tą wartość dla obiektu.
stachuf11
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
destroyerr
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.
stachuf11
tak, o to chodziło, działa jak trzeba
pozdrawiam
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.