Учебники

FuelPHP — Программирование форм

FuelPHP предоставляет три класса, Form Fieldset ,, и Input ,, для выполнения программирования формы.

  • Класс Form предоставляет возможность создавать все элементы HTML-форм.

  • Класс Fieldset предоставляет возможность создания html-элемента с помощью методов более высокого уровня, интеграции моделей и проверки.

  • Входной класс обеспечивает возможность анализа данных, отправленных через HTML-формы, а также параметров http, серверных переменных и пользовательских агентов.

Класс Form предоставляет возможность создавать все элементы HTML-форм.

Класс Fieldset предоставляет возможность создания html-элемента с помощью методов более высокого уровня, интеграции моделей и проверки.

Входной класс обеспечивает возможность анализа данных, отправленных через HTML-формы, а также параметров http, серверных переменных и пользовательских агентов.

В этой главе мы изучим программирование форм в FuelPHP.

форма

Как обсуждалось ранее, класс Form предоставляет методы для создания HTML-элементов формы, а важные методы следующие:

открыть()

open () используется для создания новой формы. Это обеспечивает следующие два параметра —

  • $ attribute — атрибуты тега формы в виде массива или просто URL-адрес действия в виде строки.

  • $ hidden — массив имен скрытых полей и их значений.

$ attribute — атрибуты тега формы в виде массива или просто URL-адрес действия в виде строки.

$ hidden — массив имен скрытых полей и их значений.

echo Form::open('/employee/add'); 
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));

близко()

close () просто закрывает форму.

echo Form::close();

вход ()

input () создает элемент ввода html. Он имеет следующие три параметра,

  • $ field — имя элемента ввода

  • $ value — значение элемента ввода

  • $ attribute — атрибуты входного элемента в виде массива

$ field — имя элемента ввода

$ value — значение элемента ввода

$ attribute — атрибуты входного элемента в виде массива

echo Form::input('name', 'jon', array('style' => 'border: 20px;'));

элемент метки

label создает элемент метки html. Он имеет следующие три параметра,

  • $ label — метка для показа

  • $ id — идентификатор элемента связанной формы

  • $ attribute — атрибуты элемента метки в виде массива

$ label — метка для показа

$ id — идентификатор элемента связанной формы

$ attribute — атрибуты элемента метки в виде массива

echo Form::label('Employee Name', 'employee_name');

скрытый

Параметр hidden похож на метод ввода, за исключением того, что он устанавливает тип элемента input как скрытый.

пароль

Пароль похож на метод ввода, за исключением того, что устанавливает тип элемента ввода в пароль.

радио

Радио похоже на метод ввода, за исключением того, что оно устанавливает тип элемента ввода на радио. Он имеет следующие четыре параметра,

  • $ field — имя элемента ввода

  • $ value — значение элемента ввода

  • $ флажок — проверяется или нет элемент (true / false)

  • $ attribute — атрибуты входного элемента в виде массива

$ field — имя элемента ввода

$ value — значение элемента ввода

$ флажок — проверяется или нет элемент (true / false)

$ attribute — атрибуты входного элемента в виде массива

echo Form::label('Male', 'gender'); 
echo Form::radio('gender', 'Male', true); 
echo Form::label('Female', 'gender'); 
echo Form::radio('gender', 'Female');

флажок

флажок похож на метод ввода, за исключением того, что устанавливает тип элемента ввода на флажок. Он имеет следующие четыре параметра,

  • $ field — имя элемента ввода

  • $ value — значение элемента ввода

  • $ флажок — проверяется или нет элемент (true / false)

  • $ attribute — атрибуты входного элемента в виде массива

$ field — имя элемента ввода

$ value — значение элемента ввода

$ флажок — проверяется или нет элемент (true / false)

$ attribute — атрибуты входного элемента в виде массива

echo Form::label('Male', 'gender'); 
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender'); 
echo Form::checkbox('gender', 'Female');

файл

Файл аналогичен методу ввода, за исключением того, что он устанавливает тип элемента ввода для файла.

TextArea

textarea создает html элемент textarea. Он имеет следующие три параметра,

  • $ field — имя элемента textarea

  • $ value — значение элемента textarea

  • $ attribute — атрибуты элемента textarea в виде массива

$ field — имя элемента textarea

$ value — значение элемента textarea

$ attribute — атрибуты элемента textarea в виде массива

echo Form::textarea ('description', 'original data (value)', array ('rows' => 6, 
      'cols' => 8)); 

Выбрать

select создает элемент выбора HTML. Он имеет следующие четыре параметра —

  • $ field — имя выбранного элемента

  • $ values — начальные значения выбора

  • $ options — параметры в виде массива. Параметры могут быть сгруппированы с использованием вложенного массива

  • $ attribute — атрибуты входного элемента в виде массива

$ field — имя выбранного элемента

$ values — начальные значения выбора

$ options — параметры в виде массива. Параметры могут быть сгруппированы с использованием вложенного массива

$ attribute — атрибуты входного элемента в виде массива

echo Form::select ( 
   'country',  
   'none',  
   array ( 
      'none'  => 'None', 
      'asia'  => array ( 
         'in' > 'India', 
         'cn' => 'China' 
      ), 
      
      'us' => 'United States' 
   ) 
);

Отправить

submit аналогичен методу ввода, но устанавливает тип элемента ввода для отправки.

кнопка

Кнопка создает элемент кнопки HTML. Он имеет следующие три параметра,

  • $ field — имя элемента кнопки

  • $ value — значение элемента кнопки

  • $ attribute — атрибуты элемента кнопки в виде массива

$ field — имя элемента кнопки

$ value — значение элемента кнопки

$ attribute — атрибуты элемента кнопки в виде массива

echo Form::button('emp_submit', 'Submit');

сброс

сброс аналогичен методу ввода, за исключением того, что он устанавливает тип элемента ввода для сброса.

fieldset_open

fieldset_open создает набор полей html и элементы легенды. Он имеет следующие два параметра —

  • attribute — атрибуты элемента fieldset в виде массива

  • легенда — название легенды для создания

attribute — атрибуты элемента fieldset в виде массива

легенда — название легенды для создания

// returns <fieldset class = "example-class" id = "example-id">
<legend>
   Custom Legend
</legend> 

echo Form::fieldset_open (array (
   'class'  => 'example-class', 
   'id'     => 'exampleid', 
   'legend' => 'Custom Legend'
));

fieldset_close

fieldset_close создает закрывающий тег набора полей HTML.

// returns </fieldset> 
echo Form::fieldset_close(); 

Входной класс

Входной класс предоставляет методы для чтения всех данных запроса вместе с деталями формы. Вот некоторые из важных методов:

URI

URI возвращает текущий URI запроса

// request: http://localhost:8080/employee/welcome  
echo Input::uri(); // return /employee/welcome

метод

метод возвращает HTTP-метод, использованный в запросе

echo Input::method() // "POST"

получить

get позволяет читать переменные $ _GET. Он имеет следующие два параметра,

  • $ index — индекс массива $ _GET

  • $ default — значение по умолчанию, если индекс не найден.

$ index — индекс массива $ _GET

$ default — значение по умолчанию, если индекс не найден.

echo Input::get('age', '20'); // returns $_GET['age']

сообщение

пост позволяет читать переменные $ _POST. Он имеет следующие два параметра,

  • $ index — индекс массива $ _POST

  • $ default — значение по умолчанию, если индекс не найден

$ index — индекс массива $ _POST

$ default — значение по умолчанию, если индекс не найден

echo Input::get('age', '20'); // returns $_POST['age']

пары

Параметр param позволяет получить элемент из переменных $ _GET, $ _POST, $ _PUT или $ _DELETE. Он имеет следующие два параметра,

  • $ index — индекс массива

  • $ default — значение по умолчанию, если индекс не найден

$ index — индекс массива

$ default — значение по умолчанию, если индекс не найден

Если параметр не указан, он вернет все элементы.

echo Input::param('age', '20'); // returns $_POST['age']

файл

Файл позволяет читать переменные $ _FILE. Он имеет следующие два параметра,

  • $ index — индекс массива $ _POST

  • $ default — значение по умолчанию, если индекс не найден

$ index — индекс массива $ _POST

$ default — значение по умолчанию, если индекс не найден

echo Input::file();

is_ajax

is_ajax возвращает true, если запрос сделан через AJAX.

echo Input::is_ajax() // return false

протокол

protocol возвращает протокол HTTP, использованный в запросе.

echo Input::protocol() // returns "HTTP"

IP

ip возвращает IP-адрес, через который сделан запрос.

echo Input::ip() // returns "84.45.34.24" (Public IP Address)

real_ip

real_ip пытается вернуть реальный IP-адрес (если клиент находится за прокси), через который сделан запрос.

echo Input::real_ip() // returns "10.76.12.1" (local private IP Address)

сервер

Сервер позволяет читать переменные $ _SERVER. Он имеет следующие два параметра,

  • $ index — индекс массива $ _POST

  • $ default — значение по умолчанию, если индекс не найден.

$ index — индекс массива $ _POST

$ default — значение по умолчанию, если индекс не найден.

echo Input::server('HTTP_HOST'); // returns localhost:8080

ссылающейся

реферер возвращает реферер из переменной $ _SERVER. Это быстрый способ получить ссылку http текущего запроса.

user_agent

user_agent возвращает пользовательский агент из переменной $ _SERVER. Это быстрый способ получить пользовательский агент http текущего запроса.

Строка запроса

query_string возвращает строку запроса из переменной $ _SERVER. Это быстрый способ получить строку запроса текущего запроса.

заголовки

Заголовки возвращают определенный или все заголовки. Он имеет следующие два параметра —

  • $ index — имя заголовка HTTP

  • $ default — значение по умолчанию, если индекс не найден.

$ index — имя заголовка HTTP

$ default — значение по умолчанию, если индекс не найден.

echo Input::headers('Content-Type'); // returns "text/html"

расширение

extension возвращает расширение URI текущего запроса.

// Example URL: http://localhost/test/ 
echo Input::extension();  // NULL  

// Example URL: http://localhost/test.html 
echo Input::extension();  // 'html'

Рабочий пример

Давайте создадим простую форму для добавления нового сотрудника, используя класс Form и Input.

Создать форму

Создайте новое действие get_add в контроллере сотрудника следующим образом.

public function get_add() { 
   return Response::forge(View::forge('employee/add')); 
} 

Теперь добавьте view для action, fuel / app / views / employee / add.php следующим образом.

<!DOCTYPE html> 
<html lang = "en"> 
   <head> 
      <title>Employee :: add page</title> 
      <meta charset = "utf-8"> 
      <meta name = "viewport" content = "width = device-width, initial-scale = 1"> 
      <?php echo Asset::css('bootstrap.css'); ?> 
   </head>
   
   <body> 
      <div class = "container"> 
         <?php 
            echo Form::open(array('action' => 'employee/add', 'method' => 'post')); 
         ?>  
         
         <div class = "form-group"> 
            <?php 
               echo Form::label('Employee name:', 'name'); 
               echo Form::input('name', '', array('class' => 'form-control')); 
            ?> 
         </div> 
         
         <div class = "form-group"> 
            <?php 
               echo Form::label('Employee age:', 'age'); 
               echo Form::input('age', '', array('class' => 'form-control')); 
            ?> 
         </div> 
         
         <?php echo Form::button('frmbutton', 'Submit', array(
            'class' => 'btn btn-default')); 
         ?> 
         
         <?php 
            echo Form::close(); 
         ?> 
      </div> 
   </body> 
   
</html>

Здесь мы использовали bootstrap для разработки формы. FuelPHP обеспечивает полную поддержку компонентов начальной загрузки. Теперь, запрашивая страницу, http: // localhost: 8080 / employee / add покажет следующую форму.

Дизайн формы

Форма процесса

Создайте новое действие post_add для обработки формы и добавьте данные сотрудника, введенные пользователем, в базу данных в контроллере сотрудника следующим образом.

public function post_add() { 
   $name = Input::post('name'); 
   $age = Input::post('age'); 
   $model = new model_employee(); 
   $model->name = $name; 
   $model->age = $age; 
   $model->save();  
   Response::redirect('employee/list'); 
}

Здесь мы были перенаправлены на страницу со списком сотрудников, как только введенные пользователем данные были сохранены в базе данных. Далее мы создадим страницу со списком сотрудников.

Список сотрудников

Создайте новое действие action_list, чтобы перечислить сотрудника в базе данных следующим образом.

public function action_list() { 
   $data = array(); 
   $data['emps'] = model_employee::find('all');
   return Response::forge(view::forge('employee/list', $data)); 
}

Создайте новый вид, топливо / приложение / представления / сотрудник / список для вышеуказанного действия следующим образом.

<ul> 
   <?php 
      foreach($emps as $emp) {  
   ?> 
   <li><?php echo $emp['name']; ?></li> 
   <?php 
   } 
   ?> 
</ul> 

Проверьте форму

Теперь запросите URL-адрес http: // localhost: 8080 / employee / add , введите некоторые данные о сотрудниках, как показано на следующем снимке экрана, и отправьте форму.

Данные сотрудника

Затем он показывает всех сотрудников (включая недавно добавленного), доступных в базе данных, следующим образом: