"Класс 'App \ Controllers \ controller' не найден" - PullRequest
1 голос
/ 01 мая 2019

Я новичок в laravel, здесь я пытаюсь создать свою собственную форму входа и регистрации, где пользователь может войти и зарегистрироваться. Моя форма регистрации работает нормально, она собирает данные и сохраняет их в базе данных, но всякий раз, когда я пытаюсь войти, используя те же данные, которые он дает мне эту ошибку. Любая помощь будет оценена, я пробовал много способов, но не смог. Спасибо ....

Ошибка: Класс 'App \ Controllers \ controller' не найден

МОЙ HTML:

@extends("layouts.master")

@section('title')
My page
@endsection

@section('content')
<div class="row">
<div class="col-md-6">
<h3>Sign-Up</h3>
<form action="{{route('signup')}}" method="post">

<div class="form-group">
<label for="email">Your email</label>
<input class="form-control" type="text" name="email" id="email">
</div>

<div class="form-group">
<label for="first_name">First Name</label>
<input class="form-control" type="text" name="first_name" id="first_name">
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control"  type="password" name="password" id="password">
</div>

<button type="sumbit" class="btn btn-primary">sumbit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">

</form>
</div>

<div class="col-md-6">
<h3>Login </h3>
<form action="{{route('signin')}}" method="post">

<div class="form-group">
<label for="email">Your email</label>
<input class="form-control" type="text" name="email" id="email">
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control"  type="password" name="password" id="password">
</div>

<button type="sumbit" class="btn btn-primary">sumbit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">

</form>
</div>
</div>
@endsection

CONTROLLER:

<?php
namespace App\Controllers;

use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Request;
use Hash;



class UserController extends controller
{
    public function getdashboard()
    {
        return view('dashboard');
    }

    public function postSignUp(Request $request)
    {
        $email = $request['email'];
        $first_name = $request['first_name'];
        $password = bcrypt($request['password']);


        $user = new User();
        $user->email = $email;
        $user->first_name = $first_name;
        $user->password = $password;

        $user->save();
        return redirect()->route('dashboard');
    }
    public function postSignIn(Request $request)
    {
        if(Auth::attempt([ 'email' => $request['email'],'password' => $request['password']])){
            return redirect()->route('dashboard');
        }
        return redirect()->back();
    }
}

ROUTE:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

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


Route::post('/signup',[
    'uses'=>'UserController@postSignUp',
    'as'=>'signup'

]);


Route::post('/signin',[
    'uses'=>'UserController@postSignIn',
    'as'=>'signin'

]);

Route::get('/dashboard',[
    'uses'=>'UserController@getdashboard',
    'as'=>'dashboard'

]);


Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Ответы [ 4 ]

3 голосов
/ 01 мая 2019

Ваше имя не подходит для доступа к папке Controllers, первая строка кода в файле контроллера изменяется:

namespace App\Controllers;

на

namespace App\Http\Controllers;

также измените эторасставаться в случае, если у вас есть эта ошибка (Cannot use object of type Illuminate\Support\Facades\Request as array):

use Request;  to  use Illuminate\Http\Request;

и

$email = $request['email'];
$first_name = $request['first_name'];
$password = bcrypt($request['password']);

до

$email = $request->email;
 $first_name = $request->first_name;
 $password = bcrypt($request->password);
0 голосов
/ 01 мая 2019

Есть несколько laravel примеров использования , которые я хотел бы связать здесь, и есть класс с именем Controller в App\Http\Controllers\Controller, который нужно использовать в качестве базового класса, но в Короче говоря, просто измените пространство имен вашего контроллера с App\Controllers на App\Http\Controllers, или вы даже можете реализовать класс Controller для себя, который может выглядеть примерно так:

<?php
namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;

class UserController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function postSignUp(Request $request)
    {
        $this->validate($request, [
            'email' => 'required|email|unique:users',
            'first_name' => 'required|max:120',
            'password' => 'required|min:4'
        ]);
        $email = $request['email'];
        $first_name = $request['first_name'];
        $password = bcrypt($request['password']);
        $user = new User();
        $user->email = $email;
        $user->first_name = $first_name;
        $user->password = $password;
        $user->save();
        Auth::login($user);
        return redirect()->route('dashboard');
    }
    public function postSignIn(Request $request)
    {
        $this->validate($request, [
            'email' => 'required',
            'password' => 'required'
        ]);
        if (Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) {
            return redirect()->route('dashboard');
        }
        return redirect()->back();
    }
    public function getLogout()
    {
        Auth::logout();
        return redirect()->route('home');
    }
    public function getAccount()
    {
        return view('account', ['user' => Auth::user()]);
    }
    public function postSaveAccount(Request $request)
    {
        $this->validate($request, [
           'first_name' => 'required|max:120'
        ]);
        $user = Auth::user();
        $old_name = $user->first_name;
        $user->first_name = $request['first_name'];
        $user->update();
        $file = $request->file('image');
        $filename = $request['first_name'] . '-' . $user->id . '.jpg';
        $old_filename = $old_name . '-' . $user->id . '.jpg';
        $update = false;
        if (Storage::disk('local')->has($old_filename)) {
            $old_file = Storage::disk('local')->get($old_filename);
            Storage::disk('local')->put($filename, $old_file);
            $update = true;
        }
        if ($file) {
            Storage::disk('local')->put($filename, File::get($file));
        }
        if ($update && $old_filename !== $filename) {
            Storage::delete($old_filename);
        }
        return redirect()->route('account');
    }
    public function getUserImage($filename)
    {
        $file = Storage::disk('local')->get($filename);
        return new Response($file, 200);
    }
}

Обратите внимание, что PHP не учитывает регистр для именования классов, но вы можете использовать и расширять \App\Http\Controllers\Controller вместо просто controller

0 голосов
/ 01 мая 2019

$request - это объект, поэтому вы можете получить свойства с помощью ->.Измените код контроллера, как показано ниже:

<?php
namespace App\Http\Controllers; // HERE

use Illuminate\Http\Request; // FOR YOUR COMMENT
use App\Http\Requests;
use App\User;
use App\UserTypes;

use Auth;
use Hashids;
use Redirect;
use Request;
use Hash;



class UserController extends controller
{
    public function getdashboard()
    {
        return view('dashboard');
    }

    public function postSignUp(Request $request)
    {
        $email = $request->email;// HERE
        $first_name = $request->first_name;// HERE
        $password = bcrypt($request->password);// HERE


        $user = new User();
        $user->email = $email;
        $user->first_name = $first_name;
        $user->password = $password;

        $user->save();
        return redirect()->route('dashboard');
    }
    public function postSignIn(Request $request)
    {
        if(Auth::attempt([ 'email' => $request->email,'password' => $request->password])){// HERE
            return redirect()->route('dashboard');
        }
        return redirect()->back();
    }
}
0 голосов
/ 01 мая 2019

По умолчанию laravel размещает контроллер под

app\Http\Controllers

, поэтому замените namespace App\Controllers; на namespace App\Http\Controllers;

Редактировать:

Доступ к переменной запроса, как показано ниже:

 $email = $request->input('email');
 $first_name = $request->input('first_name');
 //similar way for other inputs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...