Podręcznik użytkownika CodeIgniter wersja 2.2.1


Helper Form

Helper Form zawiera funkcje pomagające w pracy z formularzami.

Ładowanie helpera

Ten helper jest ładowany za pomocą poniższego kodu:

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

Dostępne są następujące funkcje:

form_open()

Tworzy tag otwierający formularz z bazowym adresem URL stworzonym na podstawie Twoich ustawień konfiguracyjnych. Pozwala opcjonalnie na dodanie atrybutów i ukrytych pól formularza. Zawsze dodaje atrybut accept-charset, który oparty jest o charset z Twojego pliku konfiguracyjnego.

Główną korzyścią płynącą z używania tego tagu, zamiast pisania własnego kodu HTML, jest to, że strona staje się bardziej elatyczna w przypadku gdy adresy URL na stronie ulegną zmianie.

Prosty przykład:

echo form_open('email/send');

Powyższy przykład tworzy formularz, który kieruje na główny adres strony i dodaje segment URI "email/send":

<form method="post" accept-charset="utf-8" action="http:/example.com/index.php/email/send" />

Dodawanie atrybutów

Atrybuty mogą zostac dodane poprzez przypisanie tablicy asocjacyjnej do drugiego parametru:

$attributes = array('class' => 'email', 'id' => 'myform');

echo form_open('email/send', $attributes);

Powyższy przykład tworzy formularz podobny do tego:

<form method="post" accept-charset="utf-8" action="http:/example.com/index.php/email/send"  class="email"  id="myform" />

Dodawanie ukrytych pól do formularza

Ukryte pola mogą zostać dodane, poprzez przypisanie tablicy asocjacyjnej do trzeciego parametru:

$hidden = array('username' => 'Joe', 'member_id' => '234');

echo form_open('email/send', '', $hidden);

Powyższy przykład tworzy formularz podobny do tego:

<form method="post" accept-charset="utf-8" action="http:/example.com/index.php/email/send">
<input type="hidden" name="username" value="Joe" />
<input type="hidden" name="member_id" value="234" />

form_open_multipart()

Ta funkcja działa identycznie jak form_open(), z tą różnicą że dodaje atrybut multipart, który jest niezbędny jeśli chcesz przesłąć plik za pomocą formularza.

form_hidden()

Pozwala na wygenerowanie ukrytego pola input. Możesz też przesłać ciąg nazwa/wartość, aby utworzyć pole:

form_hidden('username', 'johndoe');

// Da nam:

<input type="hidden" name="username" value="johndoe" />

Możesz też przesłać tablicę asocjacyjną aby utworzyć wiele pól:

$data = array(
              'name'  => 'John Doe',
              'email' => 'john@example.com',
              'url'   => 'http://example.com'
            );

echo form_hidden($data);

// Da nam:

<input type="hidden" name="name" value="John Doe" />
<input type="hidden" name="email" value="john@example.com" />
<input type="hidden" name="url" value="http://example.com" />

form_input()

Pozwala na wygenerowanie standardowego, tekstowego pola input. Możesz przypisać nazwę pola i jego wartość, kolejno w pierwszym i drugim parametrze:

echo form_input('username', 'johndoe');

Możesz też przesłać tablicę asocjacyjną zawierającą jakiekolwiek dane, jakie chcesz żeby pola posiadały:

$data = array(
              'name'        => 'username',
              'id'          => 'username',
              'value'       => 'johndoe',
              'maxlength'   => '100',
              'size'        => '50',
              'style'       => 'width:50%',
            );

echo form_input($data);

// Da nam:

<input type="text" name="username" id="username" value="johndoe" maxlength="100" size="50" style="width:50%" />

Jeśli chcesz żeby Twoje pole formularza zawierało dodatkowe dane, np. Javascript, możesz przypisać ciąg znaków jako trzeci parametr:

$js = 'onClick="jakas_funkcja()"';

echo form_input('username', 'johndoe', $js);

form_password()

Ta funkcja jest taka sama jak form_input(), z tym że przyjmuje jako typ wartość "password".

form_upload()

Ta funkcja jest taka sama jak form_input(), z tym że przyjmuje jako typ wartość "file", pozwalając tym samym na użycie jej do uploadu plików.

form_textarea()

Ta funkcja jest taka sama jak form_input(), z tym że generuje pole o typie "textarea". Uwaga: Zamiast atrybutów "maxlength" i "size" należy używać atrybutów "rows" i "cols".

form_dropdown()

Pozwala na stworzenie standardowego pola drop-down. Pierwszy parametr zawiera nazwę pola, drugi tablicę asocjacyjną dostępnych opcji, a trzeci parametr przechowuje wartość, która ma zostać zaznaczona. Możesz również przypisać tablicę wielu wartości do trzeciego parametru - wtedy CodeIgniter stworzy pole o type wielokrotnego wyboru. Przykład:

$options = array(
                  'small'  => 'Small Shirt',
                  'med'    => 'Medium Shirt',
                  'large'   => 'Large Shirt',
                  'xlarge' => 'Extra Large Shirt',
                );

$shirts_on_sale = array('small', 'large');

echo form_dropdown('shirts', $options, 'large');

// Daje nam:

<select name="shirts">
<option value="small">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>

echo form_dropdown('shirts', $options, $shirts_on_sale);

// Daje nam:

<select name="shirts" multiple="multiple">
<option value="small" selected="selected">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>

Jeśli chciałbyś aby otwierający znacznik <select> zawierał dodatkowe dane, jak atrybut id lub Javascript, możesz przypisać je jako ciąg znaków do czwartego parametru:

$js = 'id="shirts" onChange="jakas_funkcja();"';

echo form_dropdown('shirts', $options, 'large', $js);

Jeśli tablica przypisana do wartości $options jest wielowymiarowa, to funkcja form_dropdown() utworzy znacznik <optgroup> z kluczami tablicy jako nazwami.

form_multiselect()

Pozwala na stworzenie standardowego pola multiselect. Pierwszy parametr zawiera nazwę pola, drugi tablicę asocjacyjną z opcjami wyboru, a trzeci parametr wartości, które mają zostać zaznaczone. Zasada stosowania parametrów jest taka sama jak w przypadku funkcji form_dropdown(), z tą różnicą, że nazwa pola musi używać składni tablicowej np. foo[].

form_fieldset()

Pozwala na stworzenie pól fieldset/legend.

echo form_fieldset('Adres');
echo "<p>zawartość formularza</p>\n";
echo form_fieldset_close();

// Daje
<fieldset>
<legend>Adres</legend>
<p>zawartość formularza</p>
</fieldset>

Podobnie jak w innych funkcjach, możesz wysłać tablicę asocjacyjną w drugim parametrze, jeśli chcesz dodać dodatkowe atrybuty.

$attributes = array('id' => 'address_info', 'class' => 'address_info');
echo form_fieldset('Adres', $attributes);
echo "<p>zawartość formularza</p>\n";
echo form_fieldset_close();

// Daje
<fieldset id="address_info" class="address_info">
<legend>Address Information</legend>
<p>zawartość formularza</p>
</fieldset>

form_fieldset_close()

Tworzy tag zamykający </fieldset>. Jedyną zaletą użycia tej funkcji jest to, że pozwala na przypisanie danych, które zostaną dodane po tagu zamknięcia. Dla przykładu:

$string = "</div></div>";

echo form_fieldset_close($string);

// Da nam:
</fieldset>
</div></div>

form_checkbox()

Pozwala na stworzenie pola typu checkbox. Prosty przykład:

echo form_checkbox('newsletter', 'accept', TRUE);

// Da nam:

<input type="checkbox" name="newsletter" value="accept" checked="checked" />

Trzeci parametr zawiera wartość TRUE/FALSE (boolean), która decyduje czy box powinien być zaznaczony, czy nie.

Podobnie jak innych funkcjach w tym helperze, tutaj również możesz przypisać tablicę atrybutów:

$data = array(
    'name'        => 'newsletter',
    'id'          => 'newsletter',
    'value'       => 'accept',
    'checked'     => TRUE,
    'style'       => 'margin:10px',
    );

echo form_checkbox($data);

// Da nam:

<input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />

Tak jak w innych funkcjach, jeśli chciałbyś aby tag zawierał dodatkowe dane, jak Javascript, możesz przypisać je jako ciąg znaków do czwartego parametru:

$js = 'onClick="jakas_funkcja()"';

echo form_checkbox('newsletter', 'accept', TRUE, $js)

form_radio()

Ta funkcja jest taka sama pod każdym względem jak form_checkbox(), z tym że ustawia dla pola typ "radio".

form_submit()

Pozwala na stworzenie standardowego przycisku submit. Prosty przykład:

echo form_submit('mysubmit', 'Wyślij formularz!');

// Da nam:

<input type="submit" name="mysubmit" value="Submit Post!" />

Tak jak w innych funkcjach, jeśli chcesz ustawić własne atrybuty, możesz wysłać tablicę asocjacyjną w pierwszym parametrze. Trzeci parametr pozwala na dodanie dodatkowych danych, np. Javascript.

form_label()

Pozwala na stworzenie tagu <label>. Prosty przykład:

echo form_label('Jak masz na imię', 'username');

// Da nam:
<label for="username">Jak masz na imię</label>

Podobnie jak w innych funkcjach, możesz wysłać tablicę asocjacyjną w trzecim parametrze, jeśli chcesz dodać dodatkowe atrybuty.

$attributes = array(
    'class' => 'mycustomclass',
    'style' => 'color: #000;',
);
echo form_label('Jak masz na imię', 'username', $attributes);

// Would produce:
<label for="username" class="mycustomclass" style="color: #000;">Jak masz na imię</label>

form_reset()

Pozwala na stworzenie standardowego przycisku reset. Funkcji używaj identycznie jak form_submit().

form_button()

Pozwala na stworzenie standardowego elementu button. Możesz ręcznie przypisać nazwę w pierwszym parametrze:

echo form_button('name','Content');

// Da nam
<button name="name" type="button">Content</button>
Możesz również przypisać tablicę asocjacyjną zawierającą dane, które chciałbyś aby zawierało pole: $data = array(
    'name' => 'button',
    'id' => 'button',
    'value' => 'true',
    'type' => 'reset',
    'content' => 'Reset'
);

echo form_button($data);

// Da nam:
<button name="button" id="button" value="true" type="reset">Reset</button>
Jeśli chcesz żeby Twoje pole formularza zawierało dodatkowe dane, np. Javascript, możesz przypisać ciąg znaków jako trzeci parametr: $js = 'onClick="jakas_funkcja()"';

echo form_button('mybutton', 'Kliknij mnie', $js);

form_close()

Tworzy tag zamykający </form>. Jedyną zaletą użycia tej funkcji jest to, że pozwala na przypisanie danych, które zostaną dodane po tagu zamknięcia. Dla przykładu:

$string = "</div></div>";

echo form_close($string);

// Da nam:

</form>
</div></div>

form_prep()

Pozwala na bezpieczne korzystanie z HTML i takich znaków jak cudzysłów w elementach formularza, bez psucia formularza. Spójrz na ten przykład:

$string = 'To jest ciąg posiadający tekst w "cudzysłowiu".';

<input type="text" name="myform" value="$string" />

Z racji tego, że ciąg posiada cudzysłowia, formularz zostanie popsuty. Funkcja form_prep konwertuje HTML, więc może on zostac bezpiecznie użyty:

<input type="text" name="myform" value="<?php echo form_prep($string); ?>" />

Uwaga: Jeśli używasz któregokolwiek z helperów umieszczonego na tej stronie, wartości dla formularza zostaną automatycznie przygotowane - nie będzie więc potrzeby wywoływania tej funkcji. Używaj tej funkcji tylko wtedy, gdy tworzysz własne elementy formularzy.

set_value()

Pozwala na ustawienie wartości dla pola input lub textarea. Musisz dostarczyć nazwę pola za pomocą pierwszego parametru funkcji. Drugi (opcjonalny) parametr pozwala na określenie domyślnej wartości dla pola. Przykład:

<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />

Pole formularza zostanie ustawione na wartość "0", kiedy formularz zostanie załadowany pierwszy raz.

set_select()

Jeśli używasz menu <select>, ta funkcja pozwoli na określenie pozycji, która jest zaznaczona. Pierwszy parametr musi zawierać nazwę pola select, drugi wartości dla każdej danej, a trzeci parametr (opcjonalny) pozwala na ustawienie danej opcji jako domyślnej (boolean TRUE/FALSE).

Przykład:

<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option>
</select>

set_checkbox()

Pozwala na wyświetlenie pola typu checkbox w stanie, w którym zostało wysłane. Pierwszy parametr musi zawierać nazwę pola checkbox, drugi jego wartość, a trzeci parametr (opcjonalny) pozwala na ustawienie danej opcji jako domyślnej (boolean TRUE/FALSE). Przykład:

<input type="checkbox" name="mycheck" value="1" <?php echo set_checkbox('mycheck', '1'); ?> />
<input type="checkbox" name="mycheck" value="2" <?php echo set_checkbox('mycheck', '2'); ?> />

set_radio()

Pozwala na wyświetlenie pola radio w stanie, w którym zostało wysłane. Ta funkcja jest taka sama jak set_checkbox() powyżej.

<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />