laravel 5: Classe 'input' não encontrada

114

No meu routes.phparquivo tenho:

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();

});

Tenho um formulário para cadastro de usuários. Também estou pegando o valor das entradas do formulário no routes.php.

Mas o erro surge quando eu registro um usuário. Erro:

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

Respostas:

275

É Inpute não é input. Esta confirmação removeu a Inputdefinição de fachada, config/app.phpportanto, você deve adicioná-la manualmente ao aliasesarray como abaixo,

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

Ou você pode importar Inputfachada diretamente conforme necessário,

use Illuminate\Support\Facades\Input;
Pinkal Vansia
fonte
E se eu usar laravelcollective para as formas no laravel 5.2 e usar {{Form}} em uma visualização, não em rotas como Shafee faz. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh
2
Você pode usar \ Input para acessá-lo globalmente
pinkal vansia
Como ou onde devo colocar isso? Alterar Input para \ Input (dentro das tags de formulário) não funciona .. Também não estou usando illuminate \ support \ facades .. mas"laravelcollective/html": "5.2.*"
nclsvh
Desculpe, não prestei atenção ao seu comentário anterior, mas em HTML você pode usar a função de ajuda old () que nada mais é do que wrapper para Input :: old ()
pinkal vansia
@NicolasV você pode colocá-lo por aliasesdentro config/app.php, como a resposta de Nvan indica .
Nik Sumeiko
28

Para laravel < 5.2 :

Abra config/app.phpe adicione a Inputclasse a aliases:

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

Para laravel >= 5.2

Mudar Input::paraRequest::

CONvid19
fonte
26

Você pode adicionar uma fachada em seu folder\config\app.php

'Input' => Illuminate\Support\Facades\Input::class,
Nvan
fonte
23

No Laravel 5.2 Input :: foi substituído por Request ::

usar

Request::

Adicione ao topo do controlador ou qualquer outra classe

use Illuminate\Http\Request;
Lewis4u
fonte
5

Em primeiro lugar, o seu problema é sobre a grafia da classe de entrada, deve ser Entrada em vez de entrada. E você tem que importar a classe com o namespace bom.

use Illuminate\Support\Facades\Input;

Se você quiser que seja chamado de 'entrada' e não 'entrada', adicione isto:

use Illuminate\Support\Facades\Input as input;

Em segundo lugar, é uma maneira suja de armazenar no banco de dados via route.php, e você não está processando a validação de dados. Se um parâmetro enviado não for o que você esperava, talvez apareça um erro de SQL, causado pelo tipo de dado. Você deve usar o controlador para interagir com informações e armazenar por meio do modelo no método do controlador.

O arquivo route.php trata do roteamento. Ele é projetado para fazer o link entre o controlador e a rota solicitada.

Para aprender sobre controlador, middleware, modelo, serviço ... http://laravel.com/docs/5.1/

Se precisar de mais informações, solução sobre o problema, você pode entrar na comunidade: https://laracasts.com/

Saudações.

Desfigurar
fonte
4

se você usa o Laravel versão 5.2 Revise isto: 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
fonte
4

Declaração em config / app.php sob aliases: -

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

Ou você pode importar a fachada de entrada diretamente conforme necessário,

use Illuminate\Support\Facades\Input;

ou

use Illuminate\Support\Facades\Input as input;
Chandrakant Ganji
fonte
2

'Input' => Illuminate\Support\Facades\Input::class, adicione-o a App.php.

prakash pokhrel
fonte
1

Este snippet de código limpo funciona bem para mim:

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
fonte
0

Adicione isso em config / app.php sob aliases: -

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

Injuriar da classe deve ser Inputnãoinput

Kenneth Sunday
fonte
0

Foi alterado no laravel 6. Veja para mais informações aqui

Não faça nada em app.php e em qualquer outro lugar, apenas substitua

input :: get () com Request :: input ()

e

na parte superior, onde você declara Input, Validator, Hash etc., remove Input e adiciona Request

use algo como:

Configuração, BD, Arquivo, Hash, Entrada , Redirecionar, Sessão, Visualização, Validador, Solicitação ;

GOLDENSPARROW MOBILE
fonte