2017-10-23 2 views
1

Ich habe eine benutzerdefinierte RegisterController, die RegistersUsers Merkmal für die Registrierung der Benutzer verwendet.Laravel 5.4.36 funktioniert nicht ordnungsgemäß für die Registrierung neuer Benutzer auf AWS ECS-Container

use Illuminate\Support\Facades\Validator; 

class RegisterController extends Controller 
{ 
     use RegistersUsers; 
... 
} 

Und im web.php (wo die Routen definiert sind), ich nach dem die Routen registrieren: Route::auth();

Ansicht auf oder Frontend-Seite, ich habe die Ansicht eine angepasste (register.blade.php), wo ich bin zusätzliche Felder zu dem Benutzerformular Register wie unten: enter image description here

Und auf meinem RegisterController, ich habe folgende Methode, um die Form zu validieren

/** 
* Get a validator for an incoming registration request. 
* 
* @param array $data 
* @return \Illuminate\Contracts\Validation\Validator 
*/ 
protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|string|max:255|unique:users', 
     'email' => 'required|string|email|max:255|unique:users', 
     'gitHubUserName' => 'required|string|max:255|unique:users', 
     'gitHubToken' => 'required|string|min:1', 
     'password' => 'required|string|min:6|confirmed', 
    ]); 
} 

BITTE BEACHTEN SIE, dass meine Benutzertabelle den GitHub Benutzernamen und GitHub Token nicht speichert.

ich eine create Funktion auf meinem RegisterController habe, die Pflege (inserting) Daten in der entsprechenden Tabellen für die Verwaltung übernimmt, wenn die Überprüfung geht (users ist nur eine normale Benutzer-Tabelle von Laravel Standardbenutzern Migration gegeben und ich habe eine andere Tabelle, die die Speicherung github userName und GitHubPwd).

Wenn ich php artisan --version mache, habe ich Laravel Framework 5.4.36 installiert. Auch ich habe PHP 7.1.9 installiert.

Jetzt funktioniert das absolut gut auf meiner lokalen MAMP-Entwicklungsumgebung.

Sobald ich dies auf AWS ECS-Container und klicken Sie auf Registrieren auf meinem Benutzerregistrierungsformular klicken, sehe ich einige seltsame Fehler ... so funktioniert das nicht.

Im Folgenden sind die Fehler:

Fehler 1: PDOException:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'gitHubUserName' in 'where clause' 

Fehler 2:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'gitHubUserName' in 'where clause' (SQL: select count(*) as aggregate from `users` where `gitHubUserName` = tony) 

kurz Also, was mir aufgefallen ist, dass Anstatt meinen eigenen Validator für die Validierung der Formularanfrage aufzurufen, wird der Laravel-Provid bereitgestellt ed RegisterUser Merkmal Klasse wie unten das Modell Validator ruft:

enter image description here

here So habe ich auf die Laravel Dokumentation und auch versucht, anderen Ansatz manuelle Validator durch Zugabe von in der Dokumentation erläuterte:

$validator = Validator::make(request(), [ 
      'name' => 'required|string|max:255|unique:users', 
      'email' => 'required|string|email|max:255|unique:users', 
      'gitHubUserName' => 'required|string|max:255|unique:users', 
      'gitHubToken' => 'required|string|min:1', 
      'password' => 'required|string|min:6|confirmed', 
     ]); 

     if ($validator->fails()) { 
      return redirect()->back() 
         ->withErrors($validator) 
         ->withInput(); 
     } 

Ich tat auch composer dump-autoload, php artisan config:clear, php artisan cache:clear nach der oben genannten Änderung zu Code.

So, jetzt ich verschiedene Fehler sehe:

enter image description here

Und hier ist es, die teilweise (oberste Linie) des Call-Stack:

in Controller.php (line 82) 

at Controller->__call('validator', array(array('_token' => 'S0c2YolcTS4AzvxIaehe6OMZ0E4LZKnFTd55nmio', 'name' => 'Tony', 'email' => '[email protected]', 'password' => 'Secret', 'password_confirmation' => 'Secret', 'gitHubUserName' => 'attres', 'gitHubToken' => '4365463463546354635465'))) 
in RegistersUsers.php (line 31) 
at RegisterController->register(object(Request)) 

Und wieder, funktioniert alles ganz gut auf meinem lokalen Docker-Container oder in der MAMP-Entwicklungsumgebung. Wenn ich das neue Image Container erstellen und es auf AWS ECS-Container ausführen, sehe ich dieses Problem. Hat jemand eine Ahnung, was der Grund für dieses seltsame Verhalten sein könnte?

Antwort

0

Ich habe endlich mein Problem herausgefunden. Ich kann nicht glauben, dass ich die Syntax der Validierungsregeln übersehen habe, während ich versucht habe, die Ursache herauszufinden.

Das Problem liegt in dieser Gültigkeitsregel innerhalb Validator::make() Methode:

'gitHubUserName' => 'required|string|max:255|unique:users',

Es nicht unique:users sein sollte, weil es keine gitHubUserName Spalt in Benutzer-Tabelle ist.

änderte ich die Regel, wie unten und alles begann wieder gut arbeiten:

'gitHubUserName' => 'required|string|max:255'

Verwandte Themen