Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Pobranie wartości POST
Forum PHP.pl > Forum > PHP > Frameworki
csharp
mam taką sytuację, że muszę do ukrytego inputa przypisać wartość liczbową, która jest pobierana z bazy za pośrednictwem tablicy foreach

normalnie sobie ją wrzucam tak j/n, ale wolałbym to stworzyć w klasie mojego całego formularza.


widok:

pętla foreach
  1. <input type="hidden" name="post_id" value="<?php echo $this->posts['post_id'] ?>">

koniec pętli.


klasa formularza:

  1. $this->addElement(
  2. 'text',
  3. 'post_ID',
  4. 'value' => '',
  5. 'filters' => array('StringTrim')
  6. )
  7. );


jak przypisać wartość, która będzie pobierana w trakcie wykonywania pętli w widoku? da się tak to zrobić?

ew, kombinowałem też inaczej aby po wysłaniu forma i jego walidacji po prostu odebrać dane post:

  1. <input type="text" name="post_ID" value="<?php echo $_POST['post_ID'] ?>">


ale to chyba nie jest najlepsza metoda, omija mi wszystkie walidatory i filtry, musiałbym je ręcznie pisać do tego konkretnego pola.. poza tym wydaje mi się, że też źle się odwołuje do tego pola POST, tz działa to ale pewnie można jakoś obiektowo to zrobić.

dzięki za porady.
amii
Napisz sobie metodę w formularzu do nadawania wartości dla pola a następnie wywołaj ją w widoku przkazując odpowiednią wartość.
csharp
wymyśliłem coś takiego.. tylko nie za bardzo chce to działać..

w formularzu:

  1. public $id_value;
  2.  
  3. public function idValue($value)
  4. {
  5. $this->id_value = $value;
  6. }



tak przypisałem wartość value
  1. $this->addElement(
  2. 'text',
  3. 'post_ID',
  4. 'value' => $this->id_value,
  5. 'id' => 'post_ID',
  6. 'filters' => array('StringTrim')
  7. )
  8. );


widok:
w kontrolerze obiekt został tak utworzony:
  1. $form = new Application_Form_Addcomment();
  2. $this->view->form = $form;


tak przypisuję wartość już w widoku.

  1. $this->form->idValue(6)


i teraz próbuje się do tego odwołać i tą wartość wyciągnąć razem z inputem..
  1. <?php echo trim($this->form->post_ID)."\n" ?>


niestety... input jest ale value puste..
amii
Przypuszczam, że ten fragment:
  1. $this->addElement(
  2. 'text',
  3. 'post_ID',
  4. 'value' => $this->id_value,
  5. 'id' => 'post_ID',
  6. 'filters' => array('StringTrim')
  7. )
  8. );

wywołujesz w metodzie init czyli w konstruktorze. wtedy to nie zadziała bo konkstruktor widzi pustą wartość $id_value a kiedy później wywołujesz metodę idValue
nie ma ona wpływu na to co jest w formularzu. Spróbuj tak jak poniżej gdzie post_ID to atrybut name dla twojego pola. Czyli:
1. Wywołujesz formularz new Apllication_blba_bla;
2. W widoku wywołujesz poniższą metodę

  1. //klasa formularza
  2. public function ustawPole($val=NULL) {
  3.  
  4. $this->getElement('post_ID')->setValue($val);
  5. }
csharp
dzięki wielkie! o to dokładnie chodziło.
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.