Ejemplo n.º 1
0
 /**
  * Add a field using one of many syntaxes
  * Returns reference to the field
  */
 public function field($label, $callback = null)
 {
     if (is_a($callback, 'Squi\\Form_Field')) {
         $field = $callback;
     } elseif (is_a($label, 'Squi\\Form_Field')) {
         $field = $label;
     } else {
         $field = Form_Field::make();
     }
     $field->form = $this;
     // field('field_name')
     if (is_null($callback) && is_string($label)) {
         $field->name = $label;
         // Automagic label by capitalization
         $field->label($label, $humanize = true);
     } elseif (is_null($callback) && is_callable($label)) {
         call_user_func($label, $field, $this);
     } elseif (is_null($callback) && is_array($label)) {
         if (isset($label[0]) && isset($label[1])) {
             $field = $label[1];
             $field->label($label[0]);
         } else {
             $field->parse_config($label);
         }
     } elseif (is_string($label) && is_array($callback)) {
         $field->label($label);
         // The array could either be an array of Table_Fields
         // or an assoc array defining a field
         if (is_a(reset($callback), 'Squi\\Form_Field')) {
             $field->fields = $callback;
         } else {
             $field->parse_config($callback);
         }
     } elseif (is_a($label, 'Squi\\Form_Label')) {
         $field->label($label);
     } elseif (is_string($label) && is_string($callback)) {
         $field->label($label);
         $field->name = $callback;
     }
     $this->fields[] = $field;
     return $field;
 }