public function field($field, $value = null, $overwrite = array())
 {
     if (!isset($this->fields[$field])) {
         return '';
     }
     $field_params = $this->fields[$field];
     $fieldname = isset($overwrite['name']) ? $overwrite['name'] : $field;
     $field_params = array_merge($field_params, $overwrite);
     $scaffold_root = isset($this->runner->router->scaffold_root) ? $this->runner->router->scaffold_root : \Routerunner\Helper::$scaffold_root;
     $path = $scaffold_root . $this->path . DIRECTORY_SEPARATOR;
     $input_root = $scaffold_root . DIRECTORY_SEPARATOR . 'input' . DIRECTORY_SEPARATOR;
     $input_path = false;
     if (isset($field_params['view']) && file_exists($path . $field_params['view'])) {
         $input_path = $path . $field_params['view'];
     } elseif (isset($field_params['view']) && file_exists($scaffold_root . DIRECTORY_SEPARATOR . $field_params['view'])) {
         $input_path = $scaffold_root . DIRECTORY_SEPARATOR . $field_params['view'];
     } elseif (file_exists($path . 'input.' . $this->formname . '.' . $field . '.php')) {
         $input_path = $path . 'input.' . $this->formname . '.' . $field . '.php';
     } elseif (file_exists($path . 'input.' . $field . '.php')) {
         $input_path = $path . 'input.' . $field . '.php';
     } elseif (isset($field_params['type']) && file_exists($path . 'input.' . $this->formname . '.' . $field_params['type'] . '.php')) {
         $input_path = $path . 'input.' . $this->formname . '.' . $field_params['type'] . '.php';
     } elseif (isset($field_params['type']) && file_exists($path . 'input.' . $field_params['type'] . '.php')) {
         $input_path = $path . 'input.' . $field_params['type'] . '.php';
     } elseif (file_exists($input_root . $this->formname . '.' . $field . '.php')) {
         $input_path = $input_root . $this->formname . '.' . $field . '.php';
     } elseif (isset($field_params['type']) && file_exists($input_root . $this->formname . '.' . $field_params['type'] . '.php')) {
         $input_path = $input_root . $this->formname . '.' . $field_params['type'] . '.php';
     } elseif (file_exists($input_root . $field . '.php')) {
         $input_path = $input_root . $field . '.php';
     } elseif (isset($field_params['type']) && file_exists($input_root . $field_params['type'] . '.php')) {
         $input_path = $input_root . $field_params['type'] . '.php';
     }
     $return = '';
     if ($input_path) {
         $field_params["id"] = $this->fid . '_' . $field;
         $field_params["name"] = isset($field_params['type']) && $field_params['type'] == 'submit' ? $this->formname . '[' . $fieldname . ']' : $fieldname;
         if (isset($field_params['disabled']) && $field_params['disabled'] === true) {
             $field_params['disabled'] = ' disabled="disabled" ';
         }
         $field_params['data'] = json_encode($field_params);
         \input::set($field_params);
         ob_start();
         include $input_path;
         $return = ob_get_clean();
     } else {
         $field_id = isset($field_params['input-id']) ? $field_params['input-id'] : $fieldname;
         $val = !is_null($value) ? $value : (isset($field_params['value']) ? $field_params['value'] : '');
         $return = '<input type="hidden" name="' . $fieldname . '" id="' . $field_id . '" value="' . $val . '" />';
     }
     return $return . PHP_EOL;
 }