/**
  * Processes the form.
  *
  * @param  string  $mode
  * @param  int  $id
  * @return \Illuminate\Http\RedirectResponse
  */
 protected function processForm($mode, $id = null)
 {
     $input = Input::all();
     $rules = ['name' => 'required', 'slug' => 'required|unique:roles'];
     if ($id) {
         $role = $this->roles->createModel()->find($id);
         $rules['slug'] .= ",slug,{$role->slug},slug";
         $messages = $this->validateRole($input, $rules);
         if ($messages->isEmpty()) {
             $role->fill($input)->save();
         }
     } else {
         $messages = $this->validateRole($input, $rules);
         if ($messages->isEmpty()) {
             $role = $this->roles->createModel()->create($input);
         }
     }
     if ($messages->isEmpty()) {
         return Redirect::route('roles.index')->withSuccess(trans("roles/messages.success.{$mode}"));
     }
     return Redirect::back()->withInput()->withErrors($messages);
 }