Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- */
- class Forms extends Zend_Controller_Plugin_Abstract {
- public function create( $fields, $form_attr = FALSE )
- {
- $form_attr = ( !$form_attr ) ? $this->default_form_attributs() : array_merge( $this->default_form_attributs(), $form_attr );
- $form_data = array("<form{$this->get_attributes($form_attr)}>");
- foreach($fields as $name => $data)
- {
- $form_data[] = $this->create_element($data, $name);
- }
- $form_data[] = "</form>";
- return implode( $form_data );
- }
- /**
- * создание элемента формы
- * @param array $data
- * @param String $name имя элемента
- * @return String
- */
- public function create_element( $data, $name = "" )
- {
- $element = "";
- $attr_array = (array_key_exists('attr', $data)) ? array_merge($this->default_elem_attributs(), $data['attr'] ) : $this->default_elem_attributs();
- if(!empty($name)) $attr_array['name'] = $name;
- $attr = $this->get_attributes($attr_array);
- switch($attr_array['type'])
- {
- case 'text':
- case 'password':
- {
- $element = "<input {$attr}>";
- $element = (array_key_exists('label', $data)) ? $this->label($element, $data['label']) : $element;
- $element = (array_key_exists('wrap', $data)) ? $this->wrap($element, $data['wrap']) : $element;
- break;
- }
- }
- return $element;
- }
- public function label($el, $data)
- {
- if(is_array($data)){
- $attr = (array_key_exists('attr', $data)) ? $this->get_attributes($data['attr']) : "";
- $value = (array_key_exists("value", $data)) ? $data['value'] : "";
- return "<label{$attr}> {$value} </label>".$el;
- }else{
- return "<label>{$data}</label>".$el;
- }
- }
- public function wrap($el, $data)
- {
- if( !array_key_exists('tag', $data) || empty($data['tag'])) return $el;
- $attr = (array_key_exists('attr', $data)) ? $this->get_attributes($data['attr']) : "";
- return "<{$data['tag']}{$attr}> {$el} </{$data['tag']}>";
- }
- public function get_attributes($data)
- {
- $attr = array("");
- foreach($data as $key => $value)
- {
- $attr[] = $key . '="'. $value.'"';
- }
- return implode(" ", $attr );
- }
- /**
- * значения по-умолчанию для формы
- * @return type
- */
- public function default_form_attributs()
- {
- return array(
- "action" => "",
- "method" => "post"
- );
- }
- public function default_elem_attributs()
- {
- return array(
- "type" => "text"
- );
- }
- }
- /*********************вызов*************************/
- $forms_class = new Forms();
- $fields = array(
- "fio" => array(
- 'attr' => array(
- "type" => "text",
- "value" => "тестовый пользователь",
- "class"=> "fio_class",
- "placeholder" => "введите фио"
- ),
- 'label' => array("value" => "ФИО", 'attr' => array("id" => "5")),
- 'wrap' => array("tag" => "p", 'attr' => array("class" => "sdfsdfsdf"))
- ),
- "pass" => array(
- 'attr' => array(
- "type" => "password",
- "placeholder" => "введите пароль"
- ),
- )
- );
- $form_attr = array("action" => "/index/login");
- $form = $forms_class->create( $fields, $form_attr );
- print($form);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement