laravel 5: Classe 'entrée' introuvable


114

Dans mon routes.phpdossier j'ai:

Route::get('/', function () {

    return view('login');
});

Route::get('/index', function(){
    return view('index');
});

Route::get('/register', function(){
    return view('register');
});
Route::post('/register',function(){

    $user = new \App\User;
    $user->username = input::get('username');
    $user->email  = input::get('email');
    $user->password = Hash::make(input::get('username'));
    $user->designation = input::get('designation');
    $user->save();

});

J'ai un formulaire d'inscription des utilisateurs. Je prends également la valeur des entrées de forme dans le routes.php.

Mais l'erreur survient lorsque j'enregistre un utilisateur. Erreur:

FatalErrorException in routes.php line 61:
Class 'input' not found

Réponses:


275

Ça l'est Inputet non input. Ce commit a supprimé la Inputdéfinition de façade d' config/app.phpoù vous devez l'ajouter manuellement au aliasestableau comme ci-dessous,

'Input' => Illuminate\Support\Facades\Input::class,

Ou vous pouvez importer la Inputfaçade directement selon vos besoins,

use Illuminate\Support\Facades\Input;

Et si j'utilise laravelcollective pour les formulaires de laravel 5.2 et que j'utilise {{Form}} dans une vue, pas dans les routes comme le fait Shafee. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh

2
Vous pouvez utiliser \ Input pour y accéder globalement
pinkal vansia

Comment et où dois-je mettre cela? Changer Input en \ Input (à l'intérieur des balises de formulaire) ne fonctionne pas. De plus, je n'utilise pas illuminate \ support \ façades .. mais"laravelcollective/html": "5.2.*"
nclsvh

Désolé, je n'ai pas fait attention à votre commentaire précédent, mais en HTML, vous pouvez utiliser la fonction d'aide old () qui n'est rien d'autre qu'un wrapper pour Input :: old ()
pinkal vansia

@NicolasV, vous pouvez le mettre à l' aliasesintérieur config/app.php, comme le souligne la réponse de Nvan .
Nik Sumeiko

28

Pour laravel < 5.2 :

Ouvrez config/app.phpet ajoutez la Inputclasse à aliases:

'aliases' => [
// ...
  'Input' => Illuminate\Support\Facades\Input::class,
// ...
],

Pour laravel >= 5.2

Changer Input::pourRequest::


26

Vous pouvez ajouter une façade dans votre folder\config\app.php

'Input' => Illuminate\Support\Facades\Input::class,

23

Dans Laravel 5.2, Input :: est remplacé par Request ::

utilisation

Request::

Ajouter au sommet du contrôleur ou de toute autre classe

use Illuminate\Http\Request;

5

En premier lieu, votre problème concerne l'orthographe de la classe d'entrée, devrait être Input au lieu de input. Et vous devez importer la classe avec le bon espace de noms.

use Illuminate\Support\Facades\Input;

Si vous voulez qu'il soit appelé 'entrée' et non 'entrée', ajoutez ceci:

use Illuminate\Support\Facades\Input as input;

Deuxièmement, c'est une manière sale de stocker dans la base de données via route.php, et vous ne traitez pas la validation des données. Si un paramètre envoyé n'est pas ce à quoi vous vous attendiez, une erreur SQL apparaîtra peut-être, causée par le type de données. Vous devez utiliser le contrôleur pour interagir avec les informations et stocker via le modèle dans la méthode du contrôleur.

Le fichier route.php gère le routage. Il est conçu pour faire le lien entre le contrôleur et l'itinéraire demandé.

Pour en savoir plus sur le contrôleur, le middleware, le modèle, le service ... http://laravel.com/docs/5.1/

Si vous avez besoin de plus d'informations, de solution au problème, vous pouvez rejoindre la communauté: https://laracasts.com/

Cordialement.



4

Déclaration dans config / app.php sous les alias: -

'Input' => Illuminate\Support\Facades\Input::class,

Ou vous pouvez importer la façade d'entrée directement si nécessaire,

use Illuminate\Support\Facades\Input;

ou

use Illuminate\Support\Facades\Input as input;


1

Cet extrait de code propre fonctionne très bien pour moi:

use Illuminate\Http\Request;
Route::post('/register',function(Request $request){

   $user = new \App\User;
   $user->username = $request->input('username');
   $user->email  = $request->input('email');
   $user->password = Hash::make($request->input('username'));
   $user->designation = $request->input('designation');
   $user->save();
});

0

Ajoutez ceci dans config / app.php sous les alias: -

'Input' => Illuminate\Support\Facades\Input::class,


0

Il a changé dans laravel 6. Voir pour plus d'informations ici

Ne faites rien dans app.php et ailleurs, remplacez simplement

input :: get () avec Request :: input ()

et

en haut où vous déclarez Input, Validator, Hash etc., supprimez Input et ajoutez Request

utilisez quelque chose comme:

Config, DB, fichier, hachage, entrée , redirection, session, vue, validateur, demande ;

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.