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
Vieille femme
la source

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;
pinkal vansia
la source
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::

CONvid19
la source
26

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

'Input' => Illuminate\Support\Facades\Input::class,
Nvan
la source
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;
lewis4u
la source
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.

Défigurer
la source
4

si vous utilisez Laravel version 5.2 Vérifiez ceci: https://laravel.com/docs/5.2/requests#accessing-the-request

use Illuminate\Http\Request;//Access able for All requests
...

class myController extends Controller{
   public function myfunction(Request $request){
     $name = $request->input('username');
   }
 }
Ferhat KOÇER
la source
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;
Chandrakant Ganji
la source
2

'Input' => Illuminate\Support\Facades\Input::class, ajoutez-le à App.php.

prakash pokhrel
la source
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();
});
Pradeep Sapkota
la source
0

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

'Input' => Illuminate\Support\Facades\Input::class,
Deepak Kumar
la source
0

Mauvaise classe, cela ne devrait Inputpas êtreinput

Kenneth dimanche
la source
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 ;

GOLDENSPARROW MOBILE
la source