Advertisement
sagaida

create_form_element

Jul 16th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.97 KB | None | 0 0
  1. <?php
  2. /**
  3.  
  4. */
  5. class Forms extends Zend_Controller_Plugin_Abstract {
  6.        
  7.  
  8.     public function create(  $fields, $form_attr = FALSE )
  9.     {
  10.         $form_attr = ( !$form_attr ) ? $this->default_form_attributs() : array_merge( $this->default_form_attributs(), $form_attr );
  11.        
  12.         $form_data = array("<form{$this->get_attributes($form_attr)}>");
  13.        
  14.         foreach($fields as $name => $data)
  15.         {
  16.             $form_data[] = $this->create_element($data, $name);
  17.         }
  18.         $form_data[] = "</form>";
  19.         return implode( $form_data );
  20.     }
  21.    
  22.    
  23.    
  24.     /**
  25.      * создание элемента формы
  26.      * @param array $data
  27.      * @param String $name имя элемента
  28.      * @return String
  29.      */
  30.     public function create_element( $data, $name = "" )
  31.     {
  32.         $element = "";
  33.         $attr_array = (array_key_exists('attr', $data)) ? array_merge($this->default_elem_attributs(), $data['attr'] ) : $this->default_elem_attributs();
  34.         if(!empty($name)) $attr_array['name'] = $name;
  35.         $attr = $this->get_attributes($attr_array);
  36.        
  37.         switch($attr_array['type'])
  38.         {
  39.            
  40.             case 'text':
  41.             case 'password':
  42.             {
  43.                 $element = "<input {$attr}>";
  44.                 $element = (array_key_exists('label', $data)) ? $this->label($element, $data['label']) : $element;
  45.                 $element = (array_key_exists('wrap', $data)) ? $this->wrap($element, $data['wrap']) : $element;
  46.                 break;
  47.             }
  48.         }
  49.        
  50.         return $element;
  51.     }
  52.    
  53.    
  54.     public function label($el, $data)
  55.     {
  56.         if(is_array($data)){
  57.            
  58.            $attr = (array_key_exists('attr', $data)) ? $this->get_attributes($data['attr']) : "";
  59.            $value = (array_key_exists("value", $data)) ? $data['value'] : "";
  60.            return "<label{$attr}> {$value} </label>".$el;
  61.         }else{
  62.             return "<label>{$data}</label>".$el;
  63.         }
  64.     }
  65.    
  66.     public function wrap($el, $data)
  67.     {
  68.         if( !array_key_exists('tag', $data) || empty($data['tag']))            return $el;
  69.        
  70.         $attr = (array_key_exists('attr', $data)) ? $this->get_attributes($data['attr']) : "";
  71.         return "<{$data['tag']}{$attr}> {$el} </{$data['tag']}>";
  72.     }
  73.    
  74.    
  75.     public function get_attributes($data)
  76.     {
  77.         $attr = array("");
  78.         foreach($data as $key => $value)
  79.         {
  80.             $attr[] = $key . '="'. $value.'"';
  81.         }
  82.         return implode(" ", $attr );
  83.     }
  84.    
  85.     /**
  86.      * значения по-умолчанию для формы
  87.      * @return type
  88.      */
  89.     public function default_form_attributs()
  90.     {
  91.         return array(
  92.             "action" => "",
  93.             "method" => "post"
  94.            
  95.         );
  96.     }
  97.    
  98.     public function default_elem_attributs()
  99.     {
  100.          return array(
  101.             "type" => "text"
  102.         );
  103.     }
  104.  
  105. }
  106.  
  107.  
  108.  
  109.  
  110. /*********************вызов*************************/
  111.  $forms_class = new Forms();
  112.        
  113.         $fields = array(
  114.             "fio" => array(
  115.                 'attr' => array(
  116.                     "type" => "text",
  117.                     "value" => "тестовый пользователь",
  118.                     "class"=> "fio_class",
  119.                     "placeholder" => "введите фио"
  120.                 ),
  121.                 'label' => array("value" => "ФИО", 'attr' => array("id" => "5")),
  122.                 'wrap' => array("tag" => "p", 'attr' => array("class" => "sdfsdfsdf"))
  123.             ),
  124.             "pass" => array(
  125.                 'attr' => array(
  126.                     "type" => "password",
  127.                     "placeholder" => "введите пароль"
  128.                 ),
  129.             )
  130.         );
  131.        
  132.         $form_attr = array("action" => "/index/login");
  133.        
  134.         $form = $forms_class->create( $fields, $form_attr );
  135.         print($form);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement