Example: How to use naming containers

  1. 1: <?php
  2. 2:  
  3. 3: /**
  4. 4:  * Nette\Forms naming containers example.
  5. 5:  *
  6. 6:  * - using naming containers
  7. 7:  */
  8. 8:  
  9. 9:  
  10. 10: require_once '../../Nette/loader.php';
  11. 11:  
  12. 12:  
  13. 13:  
  14. 15:  
  15. 16:  
  16. 17: $countries array(
  17. 18:     'Select your country',
  18. 19:     'Europe' => array(
  19. 20:         'CZ' => 'Czech Republic',
  20. 21:         'SK' => 'Slovakia',
  21. 22:         'GB' => 'United Kingdom',
  22. 23:     ),
  23. 24:     'CA' => 'Canada',
  24. 25:     'US' => 'United States',
  25. 26:     '?'  => 'other',
  26. 27: );
  27. 28:  
  28. 29: $sex array(
  29. 30:     'm' => 'male',
  30. 31:     'f' => 'female',
  31. 32: );
  32. 33:  
  33. 34:  
  34. 35:  
  35. 36: // Step 1: Define form with validation rules
  36. 37: $form new Form;
  37. 38:  
  38. 39: // group First person
  39. 40: $form->addGroup('First person');
  40. 41: $sub $form->addContainer('first');
  41. 42: $sub->addText('name''Your name:'35);
  42. 43: $sub->addText('email''E-mail:'35);
  43. 44: $sub->addText('street''Street:'35);
  44. 45: $sub->addText('city''City:'35);
  45. 46: $sub->addSelect('country''Country:'$countries);
  46. 47:  
  47. 48: // group Second person
  48. 49: $form->addGroup('Second person');
  49. 50: $sub $form->addContainer('second');
  50. 51: $sub->addText('name''Your name:'35);
  51. 52: $sub->addText('email''E-mail:'35);
  52. 53: $sub->addText('street''Street:'35);
  53. 54: $sub->addText('city''City:'35);
  54. 55: $sub->addSelect('country''Country:'$countries);
  55. 56:  
  56. 57: // group for buttons
  57. 58: $form->addGroup();
  58. 59:  
  59. 60: $form->addSubmit('submit1''Send');
  60. 61:  
  61. 62:  
  62. 63:  
  63. 64: // Step 2: Check if form was submitted?
  64. 65: if ($form->isSubmitted()) {
  65. 66:  
  66. 67:     // Step 2c: Check if form is valid
  67. 68:     if ($form->isValid()) {
  68. 69:         echo '<h2>Form was submitted and successfully validated</h2>';
  69. 70:  
  70. 71:         $values $form->getValues();
  71. 72:         Debug::dump($values);
  72. 73:  
  73. 74:         // this is the end, my friend :-)
  74. 75:         if (empty($disableExit)) exit;
  75. 76:     }
  76. 77:  
  77. 78: else {
  78. 79: }
  79. 80:  
  80. 81:  
  81. 82:  
  82. 83: // Step 3: Render form
  83. 84: ?>
  84. 85: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  85. 86: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  86. 87: <head>
  87. 88:     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  88. 89:     <meta http-equiv="content-language" content="en" />
  89. 90:  
  90. 91:     <title>Nette\Forms naming containers example | Nette Framework</title>
  91. 92:  
  92. 93:     <style type="text/css">
  93. 94:     <!--
  94. 95:     .required {
  95. 96:         color: darkred
  96. 97:     }
  97. 98:  
  98. 99:     fieldset {
  99. 100:         padding: .5em;
  100. 101:         margin: .3em 0;
  101. 102:         background: #EAF3FA;
  102. 103:         border: 1px solid #b2d1eb;
  103. 104:     }
  104. 105:  
  105. 106:     input.button {
  106. 107:         font-size: 120%;
  107. 108:     }
  108. 109:  
  109. 110:     th {
  110. 111:         width: 8em;
  111. 112:         text-align: right;
  112. 113:     }
  113. 114:     -->
  114. 115:     </style>
  115. 116: </head>
  116. 117:  
  117. 118: <body>
  118. 119:     <h1>Nette\Forms naming containers example</h1>
  119. 120:  
  120. 121:     <?php echo $form ?>
  121. 122: </body>
  122. 123: </html>