Skip to content

Mihai Baboi

Vorbim despre mașini, tehnologie și nu numai

Menu
  • Home
  • Despre mine
  • Despre blog
  • Contact
  • Privacy Policy
Menu

Formulare in CodeIgniter – cum folosim Form Helper

Posted on September 14, 2010

CodeIgniterIn acest articol vom vorbi despre FormHelper in CodeIgniter. Sa incepem cu inceputul:

Helper-ii sunt niste clase speciale, prezente in majoritatea Framework-urilor. Ei sunt de fapt niste clase utilitare care ne ofera metode elegante de a implementa functii repetitive.

Acest articol este dedicat unui Helper al carui scop este asistarea in crearea elementelor unui formular. De ce am vrea asta? De exemplu pentru a manipula mai usor si mai elegant atributele create dinamic ale fiecarui element in parte.

Pentru a putea folosi aceasta clasa, ea trebuie mai intai initializata. Initializarea se face in Controller (controllers/contact.php), iar sintaxa este:

$this->load->helper('form');

Ok, sa intram incepem sa construim. Tot codul pe care il scriem de acum incolo este continut in View (views/contact.php). In primul rand avem nevoie sa deschidem formularul:

<?php echo form_open('contact/send'); ?>

Acest cod va genera un tag de forma:

<form method="post" action="http:/localhost/codeigniter/index.php/contact/send" />

De multe ori, nu-i suficient sa specificam atributul action in formularele noastre. Folosim id, name sau orice alt atribut standard consideram necesar pentru referinta in JavaScript si nu numai.

Pentru asta folosim urmatoarea sintaxa:

<?php

$attributes = array('id' => 'formId', 'name' => 'formName');

form_open('contact/send', $attributes);

?>

Astfel, se genereaza un tag care arata asa:

<form method="post" action="http:/localhost/codeigniter/index.php/contact/send" id="formId" name="formName" />

Functia form_open() ia un al trei-lea parametru. Acesta este rezervat pentru input-urile de tip hidden. Daca dorim sa introducem unul sau mai multe campuri ascunse vom folosi urmatorul cod:

<?php

$attributes = ''; // Il definim doar pentru ca functia sa fie lizibila
$hidden = array('id' => 0, 'parentId' => 0);

echo form_open('contact/send', $attributes, $hidden);

?>

Sa explicam ce se intampla in cod; $hidden este un Array asociativ unde cheia fiecarui element este numele input-ului ascuns, iar valoarea elementului va fi valoarea input-ului.

Ati observat probabil, ca am definit variabila $attributes dar am setat-o cu un sir de caractere gol. Asa cum am mentinoat si in comentariu, are caracter pur demonstrativ. Voiam sa se vada clar ca $hidden este al trei-lea paramentru, dar functia ar putea arata la fel de bine asa: echo form_open('contact/send', '', $hidden);

Rezultatul:

<form method="post" action="http:/localhost/codeigniter/index.php/contact/send" />
	<input type="hidden" name="id" value="0" />
	<input type="hidden" name="parentId" value="0" />

Ca sa inchidem formularul, folosim:

<?php echo form_close(); ?>

Acum sa vedem cateva exemple pentru diverse tag-uri necesare unui formular. O sa incepem cu tag-ul input, pentru ca este cel mai des urtilizat.

<?php echo form_input('name', 'Mihai Baboi'); ?>

Unde, primul parametru va fi atributul name, iar al doi-lea va fi atributul value. Astfel ca rezultatul va arata asa:

<input type="text" name="name" value="Mihai Baboi" />

Daca dorim sa adaugam un atribut in plus, il putem trimite ca al trei-lea parametru:

<?php

$js = 'onClick="some_function()"';
echo form_input('name', 'Mihai Baboi', $js);

?>

Rezultatul va fi:

<input type="text" name="name" value="Mihai Baboi" onClick="some_function()" />

Cu toate acestea, daca veti lucra cu date dinamice pentru aceste atribute, recomand urmatoarea sintaxa:

<?php

$attributes = array(
	'id' => 'name',
	'name' => 'name',
	'size' => '40',
	'maxlength' => '64',
	'onClick' => 'some_function()'
);

echo form_input($attributes);

?>

Si codul generat:

<input type="text" id="name" name="name" size="40" maxlength="64" onClick="sime_function()" />

Un alt exemplu de tag pe care putem sa-l generam foarte elegant este <select>

<?php

$models = array(
	'1series' => 'BMW Seria 1',
	'3series' => 'BMW Seria 3',
	'5series' => 'BMW Seria 5',
	'm3' => 'BMW M3',
	'm5' => 'BMW M5'
);

$sportModels = array('m3', 'm5');

// Exemplul 1
echo form_dropdown('cars', $models, '3series');

// Exemplul 2
echo form_dropdown('cars', $models, $sportModels);

?>

In exemplul de mai sus, functia form_dropdown() ia ca prim parametru numele tag-ului select. Al doi-lea parametru este un array cu optiunile select-ului, iar parametrul trei specifica ce optiune sa fie selectata. Astfel, cele doua exemple vor genera urmatorul rezultat:

<!-- Exemplul 1 -->
<select name="cars">
	<option value="1series">BMW Seria 1</option>
	<option value="3series" selected="selected">BMW Seria 3</option>
	<option value="5series">BMW Seria 5</option>
	<option value="m3">BMW M3</option>
	<option value="m5">BMW M5</option>
</select>

<!-- Exemplul 2 -->
<select name="cars" multiple="multiple">
	<option value="1series">BMW Seria 1</option>
	<option value="3series">BMW Seria 3</option>
	<option value="5series">BMW Seria 5</option>
	<option value="m3" selected="selected">BMW M3</option>
	<option value="m5" selected="selected">BMW M5</option>
</select>

Deja acesta este un exemplu foarte bun pentru care am vrea sa folosim un Helper de acest gen. Este mult mai elegant sa iteram prin rezultatele dintr-o baza de date si sa generam array-ul $models, decat sa intercalam HTML si PHP pentru a genera optiunile “de mana”.

Acesta este principiul de functionare al lui FormHelper. N-am sa trec prin toate functiile pe care la contine, pentru ca principiul de functionare e acelasi. Va las in schimb cu un exemplu care sa va dea o idee despre cum ar trebui sa arate un formular la final.

<div id="form">
	<?php echo form_open('contact/send'); ?>

	<?php echo form_hidden('id', 0); ?>

	<?php echo form_fieldset('Add comment'); ?>

	<p><?php echo form_input($inputName); echo form_label('Name', 'name') ?></p>
	<p><?php echo form_input('email', 'te**@***il.com', $js); echo form_label('Email', 'email') ?></p>
	<p><?php echo form_input('website'); echo form_label('Website', 'website') ?></p>
	<p><?php echo form_label('Comment', 'comment') ?><br /><?php echo form_textarea($textArea); ?>

	<?php echo form_fieldset_close(); ?>

	<?php echo form_submit('sumbit', 'Save'); ?>

	<?php echo form_close(); ?>
</div>

Formularul nu contine niciun fel de stiluri, pentru ca ne vom ocupa de el intr-un articol viitor, atunci cand il veti avea atasat in forma finala. Pana atunci, astept intrebarile si sugestiile voastre.

[Later Edit]
Asa cum bine a spus George, in cazul in care folositi in mai mule locuri acesti Hepleri, este indicat sa ii includeti in autolad, pentru a nu crea o instanta de fiecare data. Pentru asta, mergeti in application/config/autoload.php si modificati $autoload['helper'] = array(); astfel:

$autoload['helper'] = array('form');

Share this:

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Analiză Tehnică
  • Auto
  • Comunicate
  • Concurs
  • Diverse
  • Evenimente
  • Foto
  • Hardware
  • Întreabă-mă
  • Lansări
  • Mașini
  • Noutăți auto
  • Opinie
  • Programare
  • Review
  • Scurte
  • Șed și Cuget
  • Zvonuri

allview Android aspect autonomie browser bune practici camera CodeIgniter Code Igniter Cold Fusion concluzii concurs css3 display div dual core Evolio evoMAG evoMAG.ro hardware HTC html html5 instalare lansare laptop Library libris.ro marketonline Nikon nokia performanta pret programare review samsung Samsung Galaxy S II smartphone specificatii standarde Symbian tableta teste upgrade user experience

©2025 Mihai Baboi | Design: Newspaperly WordPress Theme