2017-09-07 8 views
1

Ich versuche "Laravel-Module" und "Laravel-Erlaubnis-Paket". Aber wenn Post ausgeführt wird, hat es das Problem 'Methode [validate] existiert nicht.'. Ich habe 'Use Validator' hinzugefügt. aber nichts ändert sich. In einigen Themen entferne ich "Illuminate \ Routing \ Controller"; in PermissionController, aber es FehlerMethode [validate] existiert nicht. - Laravel 5.5

-Controller

namespace App\Http\Controllers; 

use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 

class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 
} 

Mein PermissionController

namespace Modules\User\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Http\Response; 
use Illuminate\Routing\Controller; 

use Auth; 

//Importing laravel-permission models 
use Spatie\Permission\Models\Role; 
use Spatie\Permission\Models\Permission; 

use Session; 
class PermissionController extends Controller 
{ 
    // use Validator; 
    public function __construct() { 
     $this->middleware(['auth', 'isAdmin']); //isAdmin middleware lets only users with a //specific permission permission to access these resources 
    } 
    /** 
    * Display a listing of the resource. 
    * @return Response 
    */ 
    public function index() 
    { 
     $permissions = Permission::all(); //Get all permissions 

     return view('user::permissions/index')->with('permissions', $permissions); 
     // return view('user::index'); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * @return Response 
    */ 
    public function create() 
    { 
     $roles = Role::get(); //Get all roles 

     return view('user::permissions/create')->with('roles', $roles); 
    } 

    /** 
    * Store a newly created resource in storage. 
    * @param Request $request 
    * @return Response 
    */ 
    public function store(Request $request) 
    { 

     $this->validate($request, [ 
      'name'=>'required|max:40', 
     ]); 

     $name = $request['name']; 
     $permission = new Permission(); 
     $permission->name = $name; 

     $roles = $request['roles']; 

     $permission->save(); 

     if (!empty($request['roles'])) { //If one or more role is selected 
      foreach ($roles as $role) { 
       $r = Role::where('id', '=', $role)->firstOrFail(); //Match input role to db record 

       $permission = Permission::where('name', '=', $name)->first(); //Match input //permission to db record 
       $r->givePermissionTo($permission); 
      } 
     } 

     return redirect()->route('permissions.index') 
      ->with('flash_message', 
      'Permission'. $permission->name.' added!'); 
    } 
} 

Route 
Route::group(['middleware' => 'web', 'prefix' => 'permissions', 'namespace' => 'Modules\User\Http\Controllers'], function() 
{ 
    Route::get('/', '[email protected]'); 
    Route::get('/create', '[email protected]'); 
    Route::post('/', '[email protected]'); 

    Route::delete('/', ["as" => "permissions.destroy", "uses" => "[email protected]"]); 
}); 

Antwort

2

hinzufügen in use Validator in Ihrem PermissionController haben zurück. Fügen Sie dieses Recht nach use Auth; hinzu. Sie haben dies derzeit an der falschen Stelle hinzugefügt.

Sie
// validate the input 
$validation = Validator::make($request->all(), [ 
    'name'=>'required|max:40', 
]); 

// redirect on validation error 
if ($validation->fails()) { 
    // change below as required 
    return \Redirect::back()->withInput()->withErrors($validation->messages()); 
} 
+0

Danke, ich es –

+0

bekam habe ich die dockerized Laravel App und irgendwie auf AWS dies nicht funktioniert:

Dann wird Ihr $this->validate(...) Code ändern. Ich bin auf 5.4.36. Ich habe diesen Fehler beim Erstellen des Docker-Images in AWS (auf alpinem Linux) festgestellt. Ich habe alles gemacht - 'composer update',' composer dump-autoload' und habe die Version mit 'php artisan --version' verifiziert. Ich bin auf Laravel 5.4.36 in AWS ECS Container. Ich bekomme "BadMethodCallException Methode [Validator] existiert nicht." – Andy

+0

Bitte posten Sie eine neue Fragen mit Ihrem Problem @Andy –

Verwandte Themen