Options API: Options does not save

My Settings wont save and I dont really know why. Here is my Code:

<?php  class STLI_New_Settings { /**  * The ID of this plugin.  *  * @since    1.0.0  * @access   private  * @var      string    $  plugin_name    The ID of this plugin.  */ private $  plugin_name;  /**  * The version of this plugin.  *  * @since    1.0.0  * @access   private  * @var      string    $  version    The current version of this plugin.  */ private $  version;  /**  * Initialize the class and set its properties.  *  * @since    1.0.0  * @param      string    $  plugin_name       The name of this plugin.  * @param      string    $  version    The version of this plugin.  */ public function __construct( $  plugin_name, $  version ) {      $  this->plugin_name = $  plugin_name;     $  this->version = $  version;  }  public function wph_create_settings() {     $  page_title = 'General Settings';     $  menu_title = 'Studio Link';     $  capability = 'manage_options';     $  slug = 'studiolink';     $  callback = array($  this, 'wph_settings_content');     $  icon = 'dashicons-admin-settings';     $  position = 76;     $  this->create_settings();     add_menu_page($  page_title, $  menu_title, $  capability, $  slug, $  callback, $  icon, $  position); }  public function wph_settings_content() { ?>     <div class="wrap">         <h1>General Settings</h1>         <?php settings_errors(); ?>         <form method="POST" action="options.php">             <?php                 settings_fields( 'studiolink' );                 do_settings_sections( 'studiolink' );                 submit_button();             ?>         </form>     </div> <?php }  public function return_sections(){     $  sections = array(         array(             'id' => 'studiolink_section',             'title' => '',             'callback' => array(),             'page' => 'studiolink',         )     );     return $  sections; }  public function return_fields(){     $  fields = array(         array(             'label' => 'Studio Link Slug',             'id' => 'stli_slug',             'type' => 'text',             'section' => 'studiolink_section',             'desc' => 'The slug, you can set in the Studio Link On Air menu.',             'default' => '',         ),         array(             'label' => 'Enable Shortcodes',             'id' => 'stli_enable_shortcodes',             'type' => 'checkbox',             'section' => 'studiolink_section',             'desc' => 'This enables or disenables the StudioLink Shortcode.',             'default' => false,         ),         array(             'label' => 'Status Caching',             'id' => 'stli_status_caching',             'type' => 'number',             'section' => 'studiolink_section',             'desc' => 'This sets the time after wich the Status is rechecked. Set 0 to disable Caching.',             'default' => '60',         ),     );     return $  fields; }  public function create_settings() {     if( false == get_option('stli') ){         $  fields = $  this->return_fields();         $  defaults = array();         foreach( $  fields as $  field ){             if( isset( $  field['default'] ) ){                 $  defaults[$  field['id']] = $  field['default'];             } else {                 $  defaults[$  field['id']] = '';             }         }         add_option('stli', $  defaults);     } }  public function wph_setup_sections() {     $  sections = $  this->return_sections();     foreach( $  sections as $  section){         add_settings_section( $  section['id'], $  section['title'], $  section['callback'], $  section['page'] );     } }  public function wph_setup_fields() {     $  fields = $  this->return_fields();     foreach( $  fields as $  field ){         add_settings_field( $  field['id'], $  field['label'], array( $  this, 'wph_field_callback' ), 'studiolink', $  field['section'], $  field );         register_setting( 'studiolink', $  field['id'] );     } }  public function wph_field_callback( $  field ) {     $  options = get_option( 'stli' );     $  value = $  options[ $  field['id'] ];     echo("<script>console.log('" . $  field['id'] . ": " . $  value . "');</script>"); // for debuging reasons     $  placeholder = '';     if ( isset($  field['placeholder']) ) {         $  placeholder = $  field['placeholder'];     }     switch ( $  field['type'] ) {             case 'checkbox':                 printf('<input %s id="%s" name="%s" type="checkbox" value="1">',                     $  value === '1' ? 'checked' : '',                     $  field['id'],                     'stli[' . $  field['id'] . ']'             );                 break;         default:             printf( '<input name="%s" id="%s" type="%s" placeholder="%s" value="%s" />',                 'stli[' . $  field['id'] . ']',                 $  field['id'],                 $  field['type'],                 $  placeholder,                 $  value             );     }     if( isset($  field['desc']) ) {         if( $  desc = $  field['desc'] ) {             printf( '<p class="description">%s </p>', $  desc );         }     } } } 

Everything works fine, but or some reason the Options wont save. I thought I can decide under what name a option is saved with the name tag inside the <input>, but everytime i try to save something, after refreshing the Page I still have the default values.

The Options get hooked with

$  plugin_settings = new STLI_New_Settings( $  this->get_plugin_name(), $  this->get_version() ); $  this->loader->add_action( 'admin_menu', $  plugin_settings, 'wph_create_settings' ); $  this->loader->add_action( 'admin_init', $  plugin_settings,'wph_setup_sections' ); $  this->loader->add_action( 'admin_init', $  plugin_settings,'wph_setup_fields' ); 

Can someone help me with this?

Thanks, Nico