if ($customField == false) { if (!empty($options)) { $form->{$fieldType}($name, $label)->options($options)->setAttributes($attributes); } else { $form->{$fieldType}($name, $label)->setAttributes($attributes); } } }); }); Xform::macro('custom_fields', function ($fields) { return Xform::template('div', function ($form) use($fields) { foreach ($fields as $name => $attr) { $form->custom_field($name, $attr, false); } }); }); Xform::macro('ng_custom_fields', function ($fields, $angularRootItem = 'item') { return Xform::template('div', function ($form) use($fields, $angularRootItem) { foreach ($fields as $name => $attr) { if (is_array($attr)) { if (!isset($attr['attr'])) { $attr['attr'] = array(); } if (!isset($attr['attr']['ng-model'])) { $attr['attr']['ng-model'] = $angularRootItem . '.' . $name; } } $form->custom_field($name, $attr); } }); });