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:
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:
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:
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?