Development

Documentation/hu_HU/forms_book/1.1/01-Form-Creation (diff)

You must first sign up to be able to contribute.

Changes between Version 1 and Version 2 of Documentation/hu_HU/forms_book/1.1/01-Form-Creation

Show
Ignore:
Author:
blerou (IP: 89.134.198.125)
Timestamp:
06/27/08 23:56:14 (9 years ago)
Comment:

piszkozat, r9798

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/hu_HU/forms_book/1.1/01-Form-Creation

    v1 v2  
    3939Az űrlapot mezők alkotják, melyeket a felhasználó tölt ki adatokkal. A symfonyban az űrlap egy objektum, mely az `sfForm` osztályból származik. Példánkban létrehoztunk egy `ContactForm` osztályt, melynek őse az `sfForm`. Az `sfForm` minden űrlap ősosztálya. Az `sfForm` teszi lehetővé űrlapjaink egyszerű kezelését és konfigurálását. 
    4040 
    41 >**Note** 
     41>**Megjegyzés** 
    4242>Az `sfForm` osztály minden űrlap ősosztálya, mely lehetővé teszi azok egyszerű kezelését és konfigurálást. 
    4343 
    6969  * `sfWidgetFormTextarea`: ez a widget egy szövegdobozt (`textarea`) ábrázol 
    7070 
    71 >**Note** 
     71>**Megjegyzés** 
    7272>Megegyezés szerint a form osztályok a `lib/form/` könyvtárban találhatók. Igazság szerint az űrlapok bárhol tárolhatók, ahol a symfony autoloading mechanizmusa megtalálja azokat, de később látni fogjuk, hogy a rendszer a `lib/form/` könyvtárba hozza létre a model objektumokból generált űrlapokat. 
    7373### Displaying the Form 
    116116A `<?php echo $form ?>` használata rendkívül hasznos űrlap prototípusok készítésénél. Lehetővé teszi, hogy a fejlesztő az üzleti logikára koncentráljon anélkül, hogy a megjelenés miatt keljen aggódnia. A 3. fejezet mutatja be az űrlapok megjelenésének testreszabását. 
    117117 
    118 >**Note** 
     118>**Megjegyzés** 
    119119Mikor a `<?php echo $form ?>` formát használjuk megjelenítésre, a PHP a `$form` objektum szöveges alakját jeleníti meg. Az objektum szöveggé konvertálásakor a PHP a `__toString()` magic metódust próbálja meg futtatni. Minden widget megvalósítja ezt, hogy az objektum HTML alakját vissza tudja adni. A `<?php echo $form ?>` meghívása egyenértékű a `<?php echo $form->__toString() ?>` hívással. 
    120120 
    121121Most már meg tudjuk jeleníteni az űrlapot a böngészőben (1-4 ábra) és ellenőrizhetük az eredményt a `contact/index` action begépelésével (`/frontend_dev.php/contact`). 
    122122 
    123 Figure 1-4 - Generated Contact Form 
    1241231-4 ábra - Generált kapcsolat űrlap 
    125124 
    126125![Generált kapcsolat űrlap](/images/forms_book/en/01_04.png "Generált kapcsolat űrlap") 
    127126 
    128 Listing 1-4 Shows the generated code by the template. 
    1291271-4 jegyzet A template által generált kód 
    130128 
    156154    </form> 
    157155 
    158 Azt láthatjuk, hogy az űrlap egy HTML táblázat három `<tr>` sorban jelenik meg. Ezért tettük az egészet egy `<table>` tagba. Minden sor tartalmaz egy `<label>` taget és egy űrlap taget (`<input>` vagy `<textarea>`). 
     156Azt láthatjuk, hogy az űrlap egy HTML táblázat három `<tr>` sorában jelenik meg. Ezért tettük az egészet egy `<table>` tagba. Minden sor tartalmaz egy `<label>` taget és egy űrlap taget (`<input>` vagy `<textarea>`). 
    159157 
    160158### Cimkék 
    161159 
    162 Minden mezőhöz automatikusan létrejön egy cimke. Alapbeállításban a cimke nevet a mező nevéből képzi a rendszer a következő szabályok alapján: az első betű nagy betű, az aláhúzások cseréje szóközökkel. 
     160Minden mezőhöz automatikusan létrejön egy cimke. Alapbeállításként a cimke nevet a mező nevéből képzi a rendszer a következő szabályok alapján: az első betű nagy betű, az aláhúzások cseréje szóközökkel. 
    163161Példa: 
    164162 
    186184Végül, a 3. fejezetben látni fogjuk, hogyan terjeszthetjük ki a cimkéket a templatekben, tovább finomítva az űrlapon. 
    187185 
    188 >**Sidebar** 
     186>**Széljegyzet** 
    189187>Widget Séma 
    190188> 
    213211### A generált táblázatokon túl 
    214212 
    215 Even if the form display is an HTML table by default, the layout format can be changed. These different types of layout formats are defined in classes inheriting from `sfWidgetFormSchemaFormatter`. By default, a form uses the `table` format as defined in the `sfWidgetFormSchemaFormatterTable` class. You can also use the `list` format: 
    216 Habár az űrlap HTML táblázatként jelenik meg alapból, a layout megváltoztatható.  
     213Habár az űrlap alapvetően HTML táblázatként jelenik meg, a layout megváltoztatható. A különböző layout formák osztályokban definiálhatók, melyek az `sfWidgetFormSchemaFormatter` osztály leszármazottai. Az űrlapok a táblázat formát (`table`) használják alapértemlezettként, ami az `sfWidgetFormSchemaFormatterTable` osztályban van meghatározva. Használhatunk akár lista formát (`list`) is: 
    217214 
    218215    [php] 
    231228    } 
    232229 
    233 Those two formats come by default and we will see in Chapter 5 how to create your own format classes. Now that we know how to display a form, let's see how to manage the submission. 
    234  
    235 ### Submitting the Form 
    236  
    237 When we created a template to display a form, we used the internal URL `contact/submit` in the `form` tag to submit the form. We now need to add the `submit` action in the `contact` module. Listing 1-5 shows how an action can get the information from the user and redirect to the `thank you` page where we just display this information back to the user
    238  
    239 Listing 1-5 - Use of the `submit` action in the `contact` module 
     230Ezzel a két formával érkezik alapértelmezetten a rendszerrel. Az 5. fejezetben majd láthatjuk, hogyan lehet létrehozni saját forma osztályt. Most már tudjuk, hogyan jelenítsünk meg egy űrlapot, nézzük meg hogyan kezeljük az elküldött űrlap adatokat.  
     231 
     232### Az űrlap elküldése 
     233 
     234Mikor létrehoztuk az űrlap megjelenését szolgáló templatet, akkor a `contact/submit` belső URL-t használtuk a `form` tagban az elküldéshez. Most fel kell vennünk a `submit` action a `contact` modulba. Az 1-5 jegyzet bemutatja, hogyan szerezzük be a felhasználó által elküldött adatot és hogyan irányítjuk át a `köszönet` oldalra, ahol csak megjelenítjük neki azt
     235 
     2361-5 jegyzet - `submit` action használata a `contact` modulban 
    240237 
    241238    [php] 
    264261    </ul> 
    265262 
    266 >**Note** 
    267 >`http_build_query` is a built-in PHP function that generates a URL-encoded query string from an array of parameters
    268  
    269 `executeSubmit()` method executes three actions
    270  
    271   * For security reasons, we check that the page has been submitted using the HTTP method `POST`. If not sent using the `POST` method then the user is redirected to a 404 page. In the `indexSuccess` template, we declared the submit method as `POST` (`<form ... method="POST">`): 
     263>**Megjegyzés** 
     264>A `http_build_query` a PHP beépített függvénye, amely URL-kódolt query stringet generál az átadott tömb paraméter alapján
     265 
     266Az `executeSubmit()` metódus három dolgot tesz
     267 
     268  * Biztonsági okokból ellenőrizzük, hogy az adatokat a HTTP `POST` metódusával küldték-e el. Ha nem, akkor a felhasználót átirányítjuk a hiba (404) oldalra. Az `indexSuccess` templateben a küldési metódust `POST`ként deklaráltuk (`<form ... method="POST">`): 
    272269 
    273270        [php] 
    274271        $this->forward404Unless($request->isMethod('post')); 
    275272 
    276   * Next we get the values from the user input to store them in the `params` table: 
     273  * Következő lépésben összegyűjtjük a felhasználó által küldött adatokat egy `params` tömbbe: 
    277274 
    278275        [php] 
    283280        ); 
    284281 
    285   * Finally, we redirect the user to a Thank you page  (`contact/thankyou`) to display his information
     282  * Végül átirányítjuk a felhasználót a Köszönet oldalra (`contact/thankyou`), hogy megjeleníthessük az elküldött információt
    286283 
    287284        [php] 
    288285        $this->redirect('contact/thankyou?'.http_build_query($params)); 
    289286 
    290 Instead of redirecting the user to another page, we could have created a `submitSuccess.php` template. While it is possible, it is better practice to always redirect the user after a request with the `POST` method
    291  
    292   * This prevents the form from being submitted again if the user reloads the Thank you page
    293  
    294   * The user can also click on the back button without getting the pop-up to submit the form again
     287Ahelyett, hogy újra átirányítjuk a felhasználót, létrehozhatnánk egy `submitSuccess.php` templatet. Ez mind igaz, de szerencsésebb, ha a felhasználót `POST` kérés után mindig továbbirányítjuk
     288 
     289  * Ezzel megakadályozzuk az űrlap újra küldését, ha a felhasználó frissítené a Köszönet oldalt
     290 
     291  * A felhasználó tudja használni a Vissza gombot anélkül, hogy egy felugró ablakot kapna, hogy küldje el az űrlapot újra
    295292 
    296293>**Tip** 
    297 >You might have noticed that `executeSubmit()` is different from `executeIndex()`. When calling these methods symfony passes the current `sfRequest` object as the first argument to the `executeXXX()` methods. With PHP, you do not have to collect all parameters, that is why we did not define the `request` variable in `executeIndex()` since we do not need it. 
    298  
    299 Figure 1-5 shows the workflow of methods when interacting with the user. 
    300  
    301 Figure 1-5 - Methods workflow 
    302  
    303 ![Methods workflow](/images/forms_book/en/01_05.png "Methods workflow") 
    304  
    305 >**Note** 
    306 >When redisplaying the user input in the template, we run the risk of a XSS (Cross-Site Scripting) attack. You can find further information on how to prevent the XSS risk by implementing an escaping strategy in the [Inside the View Layer](http://www.symfony-project.org/book/1_1/07-Inside-the-View-Layer#Output%20Escaping) chapter of "The Definitive Guide to symfony" book
    307  
    308 After you submit the form you should now see the page from Figure 1-6
    309  
    310 Figure 1-6 - Page displayed after submitting the form 
    311  
    312 ![Page displayed after submitting the form](/images/forms_book/en/01_06.png "Page displayed after submitting the form") 
    313  
    314 Instead of creating the `params` array, it would be easier to get the information from the user directly in an array. Listing 1-6 modifies the `name` HTML attribute from widgets to store the field values in the `contact` array
    315  
    316 Listing 1-6 - Modification of the `name` HTML attribute from widgets 
     294>Az élelmesebbek megfigyelhették, hogy az `executeSubmit()` különbözik az `executeIndex()`től. Mikor meghívjuk ezeket a metódusokat, a symfony az aktuális `sfRequest` objektumot átadja, mint első paramétert az `executeXXX()` metódusnak. PHP-ban nem szükséges megadnunk egy függvény vagy metódus összes paraméterét, ezért nem definiáltuk a `request` változót az `executeIndex()`ben.  
     295 
     2961-5 ábra mutatja be a kérések folyamatát a felhasználóval való interakció közben 
     297 
     2981-5 ábra - Kérések folyamata 
     299 
     300![Kérések folyamata](/images/forms_book/en/01_05.png "Kérések folyamata") 
     301 
     302>**Megjegyzés** 
     303Mikor megjelenítjük a felhasználó által megadott adatot, számolnunk kell az XSS (Cross-Site Scripting) támadás lehetőségével. A támadás ellen védekezhetünk valamilyen (output) escapelési startégia bevezetésével, amelyről további információ a "The Definitive Guide to symfony" könyv [Inside the View Layer](http://www.symfony-project.org/book/1_1/07-Inside-the-View-Layer#Output%20Escaping) fejezetében található
     304 
     305Az űrlap elküldése után az 1-6 ábrának megfelelő képet kell látnunk
     306 
     3071-6 ábra - Űrlap elküldés után oldal képe 
     308 
     309![Űrlap elküldés után oldal képe](/images/forms_book/en/01_06.png "Űrlap elküldés után oldal képe") 
     310 
     311A `params` tömb létrehozása helyett egyszerűbb lenne, ha a felhasználótól érkező információt közvetlenül tömbként kapnánk. Az 1-6 jegyzetben látható módon megváltoztatható a widgetek `name` HTML attribútuma, így a mező értékeket a `contact` tömbben kapjuk meg
     312 
     3131-6 jegyzet - A `name` HTML attribútum módosítása widgetekben 
    317314 
    318315    [php] 
    411408    } 
    412409 
    413 >**SIDEBAR** 
     410>**Széljegyzet** 
    414411>The `choices` option of the `sfWidgetFormSelect` Widget 
    415412> 
    489486 
    490487 
    491 >**Note** 
     488>**Megjegyzés** 
    492489>We recommend to define HTML attributes inside the template and not in the form itself (even if it is possible) to preserve the layers of separation as we will see in Chapter three. 
    493490 
    523520    } 
    524521 
    525 >**SIDEBAR** 
     522>**Széljegyzet** 
    526523>Protection XSS (Cross-Site Scripting) 
    527524> 
    545542>     /> 
    546543 
     544 
    547545}}} 
    548546