Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Form / dekorator - jak ustawić title dla label
Forum PHP.pl > Forum > PHP > Frameworki
ShadowD
Hej,
za pomocą:
  1. $login
  2. ->setLabel('Login:')
  3. ->setAttrib('title','Login')


Mogę dodać title dla elementu input, chciał bym również dodać go do lable, czy istnieje taka możliwość?
KrzysiekWildfire
Tak, spróbuj dodać jeszcze coś takiego
  1. $login->setDecorators(
  2. 'label',
  3. 'viewHelper'
  4. )
  5. )

lub
  1. $login->setDecorators(
  2. 'viewHelper',
  3. array('DtDdWrapper',array(
  4. 'DtLabel'=>'Login:'
  5. ))
  6. )
  7. )


Pisałem z głowy, więc mogłem się gdzieś pomylić, ale powinno działać.
ShadowD
Oba kody "nic" nie zmieniają, nic tz. nie ma żadnych widocznych zmian w kodzie, ale naprowadziłeś mnie na informację, że dekoratory nie muszą się tyczyć tylko całości formularza, a że mogą jakiejś jego części, może dlatego, że używam dekoratorów całości. Popróbuję jeszcze z kolejnością, odezwę cię w razie niepowodzenia. :-)

Edit:
Mój kod wygląda tak: http://wklej.org/id/609096/

Próba wstawienia Twojego kodu po dekoratorach powoduje server error, próba wstawienie przed nimi i przed wstawieniem elementów do forma nic nie zmienia. Jeśli mógł byś wytłumaczyć jak to wpisać, dać jakąś wskazówkę - zaczynam z zf'em, a moduł form jest bardzo rozbudowany, ale za to znacznie przyśpiesza pisanie bezpiecznych formów.
Pilsener
Przykład użycia dekoratorów przy pomocy tablic:

  1. $form_element->setDecorators(array(
  2. array('ViewHelper'),
  3. array('Errors'),
  4. array(array('data'=>'HtmlTag'), array('tag' => 'span')),
  5. array('Label', array('tag' => 'label','title' => 'sfffe fererff refererf ererg ergerger gergerg')),
  6. array(array('row'=>'HtmlTag'),array('tag'=>'div','openOnly'=>true))
  7. ));


Można też na obiektach:
  1. $object = new Zend_Form_Decorator....;
  2. $object->metoda();
  3. // itp. itd.


Jak używasz IDE to masz podgląd listy metod wraz z opisem.
ShadowD
Cytat
$name->setDecorators(array(
array('Label', array('tag' => 'label','title' => 'sfffe fererff refererf ererg ergerger gergerg'))
));


Takie coś daje pożądany rezultat, ale oprócz dodania title, usuwa inne właściwości, a nie chciał bym ustawiać całości x razy, jest na to jakaś metoda by title wstawiać niezależnie?
Pilsener
Metody setDecorator nie ma a setDecorators ustawia wszystkie dekoratory od nowa. Poeksperymentuj z metodą addDecorator:

  1. $form_element->addDecorator('Label', array('tag' => 'label','title' => 'sfffe fererff refererf ererg ergerger gergerg'));


Powinno nadpisać defaultowy label.
ShadowD
Oki, wielkie dzięki.

Mam pytanie jeszcze jedno, jak ubrać sam input w tag? Label można tak jak pokazałeś przed chwilą, całość za pomocą "HtmlTag", a input - jakie jest słowo kluczowe? Nie całość tylko sam znacznik input? :-)
Pilsener
Kombinuj chłopie:
  1. $form_element->addDecorator('HtmlTag', array('tag' => 'div','title' => 'sfffe fererff refererf ererg ergerger gergerg'));


Ubierze input w diva i jeszcze doda title.
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.