Zend_Form-QuickStart.xml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. <sect1 id="zend.form.quickstart">
  2. <title>Szybki start z Zend_Form</title>
  3. <para>
  4. Ten przewodnik opisuje podstawy tworzenia, weryfikacji oraz
  5. renderowania formularzy za pomocą komponentu <code>Zend_Form</code>.
  6. </para>
  7. <sect2 id="zend.form.quickstart.create">
  8. <title>Tworzenie obiektu formularza</title>
  9. <para>
  10. Tworzenie obiektu formularza jest bardzo proste: po prostu utwórz
  11. egzemplarz klasy <code>Zend_Form</code>:
  12. </para>
  13. <programlisting role="php"><![CDATA[
  14. $form = new Zend_Form;
  15. ]]>
  16. </programlisting>
  17. <para>
  18. W zaawansowanych przypadkach możesz rozszerzyć klasę
  19. <code>Zend_Form</code>, ale dla prostych formularzy możesz utworzyć
  20. i skonfigurować formularz za pomocą obiektu <code>Zend_Form</code>.
  21. </para>
  22. <para>
  23. Jeśli chcesz określić akcję oraz metodę wywołania formularza, możesz
  24. to zrobić za pomocą metod dostępowych <code>setAction()</code> oraz
  25. <code>setMethod()</code>:
  26. </para>
  27. <programlisting role="php"><![CDATA[
  28. $form->setAction('/resource/process')
  29. ->setMethod('post');
  30. ]]>
  31. </programlisting>
  32. <para>
  33. Powyższy kod ustawia akcję formularza na adres URL
  34. "/resource/process" oraz metodę wykonania formularza na HTTP POST.
  35. Będzie to wzięte pod uwagę podczas renderowania formularza.
  36. </para>
  37. <para>
  38. Możesz ustawić dodatkowe atrybuty dla znacznika
  39. <code>&lt;form&gt;</code> używając metod setAttrib() lub
  40. setAttribs(). Przykładowo jeśli chcesz ustawić idetyfikator,
  41. utaw atrybut "id":
  42. </para>
  43. <programlisting role="php"><![CDATA[
  44. $form->setAttrib('id', 'login');
  45. ]]>
  46. </programlisting>
  47. </sect2>
  48. <sect2 id="zend.form.quickstart.elements">
  49. <title>Dodawanie elementów do formularza</title>
  50. <para>
  51. Formularz jest bezużyteczny jeśli nie posiada elementów.
  52. Komponent <code>Zend_Form</code> posiada kilkanaście domyślnych
  53. elementów które mogą być renderowane do postaci XHTML za pomocą
  54. klas pomocniczych <code>Zend_View</code>. Te elementy to:
  55. </para>
  56. <itemizedlist>
  57. <listitem><para>
  58. button (przycisk)
  59. </para></listitem>
  60. <listitem><para>
  61. checkbox (pole wyboru lub wiele pól za pomocą multiCheckbox)
  62. </para></listitem>
  63. <listitem><para>
  64. hidden (pole ukryte)
  65. </para></listitem>
  66. <listitem><para>
  67. image (obrazek)
  68. </para></listitem>
  69. <listitem><para>
  70. password (hasło)
  71. </para></listitem>
  72. <listitem><para>
  73. radio (pole opcji)
  74. </para></listitem>
  75. <listitem><para>
  76. reset (przycisk resetujący)
  77. </para></listitem>
  78. <listitem><para>
  79. select (lista zwykła oraz lista wielokrotnego wyboru)
  80. </para></listitem>
  81. <listitem><para>
  82. submit (przycisk wysyłający)
  83. </para></listitem>
  84. <listitem><para>
  85. text (pole tekstowe)
  86. </para></listitem>
  87. <listitem><para>
  88. textarea (wieloliniowe pole tekstowe)
  89. </para></listitem>
  90. </itemizedlist>
  91. <para>
  92. Masz dwie możliwości dodania elementów do formularza: możesz utworzyć
  93. egzemplarze konkretnych elementów i przekeazać je do obiektu, lub
  94. po prostu przekazać typy elementów i pozwolić obiektowi
  95. <code>Zend_Form</code> na atomatyczne utworzenie egzemplarzy
  96. obiektów określonego typu.
  97. </para>
  98. <para>
  99. Kilka przykładów:
  100. </para>
  101. <programlisting role="php"><![CDATA[
  102. // Utwórz egzemplarz elementu i przekaż go do obiektu formularza:
  103. $form->addElement(new Zend_Form_Element_Text('username'));
  104. // Przekaż typ elementu do obiektu:
  105. $form->addElement('text', 'username');
  106. ]]>
  107. </programlisting>
  108. <para>
  109. Domyślnie elementy te nie posiadają filtrów i weryfikatorów.
  110. Oznacza to że musisz skonfigurować dla swoich elementów chociaż
  111. weryfikatory i opcjonalnie filtry. Możesz to zrobić (a) zanim
  112. przekażesz element do formularza, (b) za pomocą opcji
  113. konfiguracyjnych przekazanych podczas tworzenia elementu poprzez
  114. obiekt <code>Zend_Form</code> lub (c) pobierając istniejący element
  115. z obiektu formularza i konfigurowanie go.
  116. </para>
  117. <para>
  118. Przyjrzyjmy się wpierw tworzeniu weryfikatorów dla konkretnego
  119. egzemplarza elementu. Możesz przekazać obiekt
  120. <code>Zend_Validate_*</code> lub nazwę weryfikatora który ma być 
  121. użyty:
  122. </para>
  123. <programlisting role="php"><![CDATA[
  124. $username = new Zend_Form_Element_Text('username');
  125. // Przekaż obiekt Zend_Validate_*:
  126. $username->addValidator(new Zend_Validate_Alnum());
  127. // Przekaż nazwę weryfikatora:
  128. $username->addValidator('alnum');
  129. ]]>
  130. </programlisting>
  131. <para>
  132. Jeśli używasz drugiego sposobu, a weryfikator przyjmuje argumenty
  133. konstruktora, możesz je pzekazać w tablicy jako trzeci parametr:
  134. </para>
  135. <programlisting role="php"><![CDATA[
  136. // Przekaż wzór
  137. $username->addValidator('regex', false, array('/^[a-z]/i'));
  138. ]]>
  139. </programlisting>
  140. <para>
  141. (Drugi parametr jest używany aby określić czy niepowodzenie w
  142. weryfikacji ma przerwać następne weryfikacje czy nie; domyślnie
  143. ma wartość false.)
  144. </para>
  145. <para>
  146. Możesz także chcieć określić element jako wymagany. Zrobisz to
  147. używając metody dostępowej lub przekazując opcję podczas tworzenia
  148. elementu. Oto pierwszy sposób:
  149. </para>
  150. <programlisting role="php"><![CDATA[
  151. // Ustaw element jako wymagany:
  152. $username->setRequired(true);
  153. ]]>
  154. </programlisting>
  155. <para>
  156. Gdy element jest wymagany, weryfikator 'NotEmpty' dodawany jest na
  157. sam początek łańcucha weryfikatorów, dzięki czemu możemy być pewni
  158. że element będzie posiadał wartość.
  159. </para>
  160. <para>
  161. Filtry są rejestrowane w taki sam sposób jak weryfikatory. Aby
  162. pokazać jak działają, dodajmy filtr zamieniający znaki na małe
  163. litery:
  164. </para>
  165. <programlisting role="php"><![CDATA[
  166. $username->addFilter('StringtoLower');
  167. ]]>
  168. </programlisting>
  169. <para>
  170. Finalnie konfiguracja elementu może wyglądać tak:
  171. </para>
  172. <programlisting role="php"><![CDATA[
  173. $username->addValidator('alnum')
  174. ->addValidator('regex', false, array('/^[a-z]/'))
  175. ->setRequired(true)
  176. ->addFilter('StringToLower');
  177. // lub bardziej zwięźle:
  178. $username->addValidators(array('alnum',
  179. array('regex', false, '/^[a-z]/i')
  180. ))
  181. ->setRequired(true)
  182. ->addFilters(array('StringToLower'));
  183. ]]>
  184. </programlisting>
  185. <para>
  186. Tworzenie obiektu dla każdego z elementów formularza może być czasem
  187. nieco kłopotliwe. Spróbujmy zatem użyć sposobu (b) przedstawionego
  188. wyżej. Kiedy tworzymy nowy element używając metody
  189. <code>Zend_Form::addElement()</code> jako fabryki, możemy
  190. opcjonalnie przekazać opcje konfiguracyjne. Obejmuje to także
  191. konfigurację filtrów i weryfikatorów. Aby to zrobić użyj kodu:
  192. </para>
  193. <programlisting role="php"><![CDATA[
  194. $form->addElement('text', 'username', array(
  195. 'validators' => array(
  196. 'alnum',
  197. array('regex', false, '/^[a-z]/i')
  198. ),
  199. 'required' => true,
  200. 'filters' => array('StringToLower'),
  201. ));
  202. ]]>
  203. </programlisting>
  204. <note><para>
  205. Jeśli konfigurujesz elementy w kilku miejscach używając tych samych
  206. opcji, możesz rozważyć stworzenie własnej klasy rozszerzającej
  207. klasę <code>Zend_Form_Element</code> i następnie użyć tej klasy do
  208. tworzenia własnych elementów; może to oszczędzić nieco pracy.
  209. </para></note>
  210. </sect2>
  211. <sect2 id="zend.form.quickstart.render">
  212. <title>Renderowanie formularza</title>
  213. <para>
  214. Renderowanie formularza jest proste. Większość elementów używa do
  215. tego klas pomocniczych <code>Zend_View</code>, więc potrzebny będzie
  216. do tego także obiekt widoku. Masz dwie możliwości: użycie metody
  217. formularza render() lub po prostu wyświetlenie formularza za pomocą
  218. konstrukcji echo.
  219. </para>
  220. <programlisting role="php"><![CDATA[
  221. // Jawnie wywołaj metodę render() i przekaż pcjonalny obiekt widoku:
  222. echo $form->render($view);
  223. // Zakładając że obiekt widoku został wcześniej ustawiony za pomocą setView():
  224. echo $form;
  225. ]]>
  226. </programlisting>
  227. <para>
  228. Domyślnie obiekty <code>Zend_Form</code> oraz
  229. <code>Zend_Form_Element</code> użyją obiektu widoku zainicjowanego
  230. w obiekcie <code>ViewRenderer</code>, co oznacza, że nie musisz go
  231. ręcznie ustawiać gdy używasz wzorca MVC Zend Framework. Renderowanie
  232. formularza w skrypcie widoku jest wtedy bardzo proste:
  233. </para>
  234. <programlisting role="php"><![CDATA[
  235. <?= $this->form ?>
  236. ]]>
  237. </programlisting>
  238. <para>
  239. <code>Zend_Form</code> używa "dekoratorów" do przeprowadzania
  240. renderowania. Te dekoratory mogą zastępować zawartość, dodawać
  241. zawartość na początku lub na końcu, a także mieć pełny wgląd w
  242. element przekazany do nich. Możesz użyć kilku dekoratorów aby
  243. uzyskać wymagany efekt. Domyślnie <code>Zend_Form_Element</code>
  244. używa czterech dekoratorów aby wygenerować kod wyjściowy; wygląda
  245. to w taki sposób:
  246. </para>
  247. <programlisting role="php"><![CDATA[
  248. $element->addDecorators(array(
  249. 'ViewHelper',
  250. 'Errors',
  251. array('HtmlTag', array('tag' => 'dd')),
  252. array('Label', array('tag' => 'dt')),
  253. ));
  254. ]]>
  255. </programlisting>
  256. <para>
  257. (Gdzie &lt;HELPERNAME&gt; jest nazwą klasy pomocniczej widoku, która
  258. ma być użyta. Może ona różnić się dla różnych elementów.)
  259. </para>
  260. <para>
  261. Układ dekoratorów przedstawiony powyżej generuje następujący kod:
  262. </para>
  263. <programlisting role="html"><![CDATA[
  264. <dt><label for="username" class="required">Username</dt>
  265. <dd>
  266. <input type="text" name="username" value="123-abc" />
  267. <ul class="errors">
  268. <li>'123-abc' has not only alphabetic and digit characters</li>
  269. <li>'123-abc' does not match against pattern '/^[a-z]/i'</li>
  270. </ul>
  271. </dd>
  272. ]]>
  273. </programlisting>
  274. <para>
  275. (Jednak kod jest inaczej sformatowany.)
  276. </para>
  277. <para>
  278. Możesz zmienić dekoratory używane przez element jeśli chcesz mieć
  279. inny wyjściowy kod XHTML; zobacz rozdział poświęcony dekoratorom
  280. aby uzyskać więcej informacji.
  281. </para>
  282. <para>
  283. Formularz przechodzi poprzez wszystkie elementy i zawiera je
  284. wewnątrz znacznika HTML <code>&lt;form&gt;</code>. Akcja i metoda
  285. wysyłania formuarza które podałeś podczas jego konfigurowania
  286. zostaną dołączone do znacznika<code>&lt;form&gt;</code>, tak samo jak
  287. inne atrybuty ustawione za pomocą metody <code>setAttribs()</code>.
  288. </para>
  289. <para>
  290. Formularz przechodzi przez elementy w takiej kolejności w jakiej
  291. były one zarejestrowane lub jeśli twój element zawiera odpowiedni
  292. atrybut, zostanie on użyty w celu ustalenia kolejności. Możesz
  293. ustawiać kolejność elementów używając metody:
  294. </para>
  295. <programlisting role="php"><![CDATA[
  296. $element->setOrder(10);
  297. ]]>
  298. </programlisting>
  299. <para>
  300. Lub przekazując kolejność jako opcję podczas tworzenia elementu:
  301. </para>
  302. <programlisting role="php"><![CDATA[
  303. $form->addElement('text', 'username', array('order' => 10));
  304. ]]>
  305. </programlisting>
  306. </sect2>
  307. <sect2 id="zend.form.quickstart.validate">
  308. <title>Sprawdzanie poprawności formularza</title>
  309. <para>
  310. Po tym jak formularz zostanie wysłany, musisz sprawdzić czy pomyślnie
  311. przeszedł weryfikację. Każdy element jest sprawdzany w oparciu o
  312. podane dane; jeśli nie ma klucza odpowiadającego nazwie elementu, a
  313. element jest oznaczony jako wymagany, weryfikacja zostanie
  314. przeprowadzona w oparciu o pustą wartość (null).
  315. </para>
  316. <para>
  317. Skąd pochodzą dane? Możesz użyć tablic <code>$_POST</code>,
  318. <code>$_GET</code> lub dowolnych innych źródeł danych
  319. (np. żądań do serwisów web):
  320. </para>
  321. <programlisting role="php"><![CDATA[
  322. if ($form->isValid($_POST)) {
  323. // dane są poprawne
  324. } else {
  325. // dane nie są poprawne
  326. }
  327. ]]>
  328. </programlisting>
  329. <para>
  330. Jeśli używasz żądań AJAX, możesz potrzebować przeprowadzić
  331. weryfikację pojedynczego elementu lub grupy elementów.
  332. Metoda <code>isValidPartial()</code> częściowo weryfikuje formularz.
  333. W przeciwieństwie do metody <code>isValid()</code>, nie przeprowadza
  334. ona weryfikacji pól dla elementów których wartości nie zostały podane:
  335. </para>
  336. <programlisting role="php"><![CDATA[
  337. if ($form->isValidPartial($_POST)) {
  338. // dane we wszystkich elementach pomyślnie przyszły weryfikację
  339. } else {
  340. // jeden lub więcej elementów nie przeszło poprawnie weryfikacji
  341. }
  342. ]]>
  343. </programlisting>
  344. <para>
  345. Do częściowej weryfikacji formularza możemy także użyć metody
  346. <code>processAjax()</code>. W przeciwieństwie do metody
  347. <code>isValidPartial()</code>, zwraca ona łańcuch znaków w formacie
  348. JSON zawierający informacje o błędach.
  349. </para>
  350. <para>
  351. Zakładając że elementy zostały zweryfikowane i są poprawne, możesz
  352. pobrać przefiltrowane wartości:
  353. </para>
  354. <programlisting role="php"><![CDATA[
  355. $values = $form->getValues();
  356. ]]>
  357. </programlisting>
  358. <para>
  359. Jeśli potrzebujesz niefiltrowanych wartości, użyj:
  360. </para>
  361. <programlisting role="php"><![CDATA[
  362. $unfiltered = $form->getUnfilteredValues();
  363. ]]>
  364. </programlisting>
  365. </sect2>
  366. <sect2 id="zend.form.quickstart.errorstatus">
  367. <title>Pobieranie informacji o błędach</title>
  368. <para>
  369. Twój formularz nie przeszedł weryfikacji? W większości przypadków
  370. możesz po prostu powtórnie renderować formularz, a błędy zostaną
  371. wyświetlone używając dekoratorów:
  372. </para>
  373. <programlisting role="php"><![CDATA[
  374. if (!$form->isValid($_POST)) {
  375. echo $form;
  376. // lub przekaż go do obiektu widoku i renderuj widok
  377. $this->view->form = $form;
  378. return $this->render('form');
  379. }
  380. ]]>
  381. </programlisting>
  382. <para>
  383. Dostępne są dwie metody do sprawdzania błędów. Metoda
  384. <code>getErrors()</code> zwraca tablicę asocjacyjną zawierającą
  385. informacje o błędach w postaci nazwa elementu / kody (gdzie kody są
  386. tablicami kodów błędów). Metoda <code>getMessages()</code> zwraca
  387. tablicę asocjacyjną zawierającą informacje o błędach w postaci nazwa
  388. elementu / komunikaty (gdzie komunikaty są asocjacyjną tablicą w
  389. postaci kod / komunikat). Jeśli dany element nie zawiera błędów, nie
  390. będzie zawarty w tablicy.
  391. </para>
  392. </sect2>
  393. <sect2 id="zend.form.quickstart.puttingtogether">
  394. <title>Złożenie tego w całość</title>
  395. <para>
  396. Zbudujmy prosty formularz logowania. Potrzebne będą elementy:
  397. </para>
  398. <itemizedlist>
  399. <listitem><para>nazwa użytkownika</para></listitem>
  400. <listitem><para>hasło</para></listitem>
  401. <listitem><para>przycisk wysyłający</para></listitem>
  402. </itemizedlist>
  403. <para>
  404. Dla zobrazowania załóżmy że poprawna nazwa użytkownika powinna
  405. składać się jedynie ze znaków alfanumerycznych, powinna zaczynać
  406. się od litery, jej długość powinna zawierać się między 6 a 12
  407. znakami; litery powinny zostać zamienione na małe. Hasło musi
  408. składać się minimalnie z 6 znaków. Wartość przycisku wysyłającego
  409. formularz zignorujemy, więc nie musi być ona weryfikowana.
  410. </para>
  411. <para>
  412. Użyjemy metod konfiguracyjnych obiektu <code>Zend_Form</code> do
  413. zbudowania formularza:
  414. </para>
  415. <programlisting role="php"><![CDATA[
  416. $form = new Zend_Form();
  417. $form->setAction('/user/login')
  418. ->setMethod('post');
  419. // Utwórz i skonfiguruj element zawierający nazwę użytkownika:
  420. $username = $form->createElement('text', 'username');
  421. $username->addValidator('alnum')
  422. ->addValidator('regex', false, array('/^[a-z]+/'))
  423. ->addValidator('stringLength', false, array(6, 20))
  424. ->setRequired(true)
  425. ->addFilter('StringToLower');
  426. // Utwórz i skonfiguruj element zawierający hasło:
  427. $password = $form->createElement('password', 'password');
  428. $password->addValidator('StringLength', false, array(6))
  429. ->setRequired(true);
  430. // Dodaj elementy do formularza:
  431. $form->addElement($username)
  432. ->addElement($password)
  433. // użyj metody addElement() jako fabryki tworzącej przycisk 'Zaloguj':
  434. ->addElement('submit', 'login', array('label' => 'Zaloguj'));
  435. ]]>
  436. </programlisting>
  437. <para>
  438. Następnie utworzymy kontroler obsługujący formularz:
  439. </para>
  440. <programlisting role="php"><![CDATA[
  441. class UserController extends Zend_Controller_Action
  442. {
  443. public function getForm()
  444. {
  445. // formularz utwórz jak wyżej
  446. return $form;
  447. }
  448. public function indexAction()
  449. {
  450. // renderuj plik user/form.phtml
  451. $this->view->form = $this->getForm();
  452. $this->render('form');
  453. }
  454. public function loginAction()
  455. {
  456. if (!$this->getRequest()->isPost()) {
  457. return $this->_forward('index');
  458. }
  459. $form = $this->getForm();
  460. if (!$form->isValid($_POST)) {
  461. // Nieudana weryfikacja; wyświetl formularz
  462. $this->view->form = $form;
  463. return $this->render('form');
  464. }
  465. $values = $form->getValues();
  466. // spróbuj uwierzytelnić
  467. }
  468. }
  469. ]]>
  470. </programlisting>
  471. <para>
  472. Utworzymy skrypt widoku wyświetlający formularz:
  473. </para>
  474. <programlisting role="php"><![CDATA[
  475. <h2>Zaloguj się:</h2>
  476. <?= $this->form ?>
  477. ]]>
  478. </programlisting>
  479. <para>
  480. Jak zauważysz w kodzie kontrolera, może być wymagane jeszcze trochę
  481. pracy: jeśli wysłane dane będą poprawne, powinieneś przeprowadzić
  482. uwierzytelnienie używając np. klasy <code>Zend_Auth</code>.
  483. </para>
  484. </sect2>
  485. <sect2 id="zend.form.quickstart.config">
  486. <title>Użycie oiektu Zend_Config</title>
  487. <para>
  488. Wszystkie klasy <code>Zend_Form</code> można skonfigurować za pomocą
  489. komponentu <code>Zend_Config</code>; możesz przkazać obiekt klasy
  490. <code>Zend_Config</code> do konstruktora lub przekazać go za pomocą
  491. metody <code>setConfig()</code>. Spójrzmy jak możemy utworzyć
  492. powyższy formularz używając pliku INI. Wpierw weźmy pod uwagę
  493. zalecenia i umieśćmy konfigurację w sekcjach odnoszących się do typu
  494. wdrożenia aplikacji i skupmy się na sekcji 'development'. Następnie
  495. ustawmy utwórzmy sekcję dla danego kontrolera ('user'), oraz klucz
  496. dla formularza ('login'):
  497. </para>
  498. <programlisting role="ini"><![CDATA[
  499. [development]
  500. ; ogólna konfiguracja formularza
  501. user.login.action = "/user/login"
  502. user.login.method = "post"
  503. ; nazwa użytkownika
  504. user.login.elements.username.type = "text"
  505. user.login.elements.username.options.validators.alnum.validator = "alnum"
  506. user.login.elements.username.options.validators.regex.validator = "regex"
  507. user.login.elements.username.options.validators.regex.options.pattern = "/^[a-z]/i"
  508. user.login.elements.username.options.validators.strlen.validator = "StringLength"
  509. user.login.elements.username.options.validators.strlen.options.min = "6"
  510. user.login.elements.username.options.validators.strlen.options.max = "20"
  511. user.login.elements.username.options.required = true
  512. user.login.elements.username.options.filters.lower.filter = "StringToLower"
  513. ; hasło
  514. user.login.elements.password.type = "password"
  515. user.login.elements.password.options.validators.strlen.validator = "StringLength"
  516. user.login.elements.password.options.validators.strlen.options.min = "6"
  517. user.login.elements.password.options.required = true
  518. ; przycisk wysyłający
  519. user.login.elements.submit.type = "submit"
  520. ]]>
  521. </programlisting>
  522. <para>
  523. Możesz to przekazać do konstruktora obiektu formularza:
  524. </para>
  525. <programlisting role="php"><![CDATA[
  526. $config = new Zend_Config_Ini($configFile, 'development');
  527. $form = new Zend_Form($config->user->login);
  528. ]]>
  529. </programlisting>
  530. <para>
  531. i cały formularz zostanie w ten sposób zdefiniowany.
  532. </para>
  533. </sect2>
  534. <sect2 id="zend.form.quickstart.conclusion">
  535. <title>Podsumowanie</title>
  536. <para>
  537. Dzięki temu przewodnikowi powinieneś nauczyć się wykorzystywać moc
  538. i elastyczność komponentu <code>Zend_Form</code>. Teraz możesz
  539. przeczytać bardziej szczegółowe informacje!
  540. </para>
  541. </sect2>
  542. </sect1>
  543. <!--
  544. vim:se ts=4 sw=4 et:
  545. -->