Проблемы при создании логина для laravel - PullRequest
0 голосов
/ 08 ноября 2019

Я работаю над заданием для универа, но столкнулся с проблемами при создании моего логина для гостевой книги, которую мы должны создать.

Я смотрел несколько видео о том, как это сделать, и я изо всех сил пытаюсь понять,как работает laravel, когда у меня возникают проблемы, когда я программирую его на PHP, я знаю, что все будет в порядке. Мой код ниже для моего "authController". Это ошибка сервера, которая мне дает (это вообще не имеет смысла) Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException. Я искал эту проблему в Интернете, но безрезультатно, поэтому приходите сюда, чтобы узнать, сталкивался ли кто-нибудь с ней раньше.

Контроллер

namespace App\Http\Controllers;

use App\Authentication;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;

class AuthController extends Controller
{

    public function index()
    {
        return view('login.auth');
    }

    public function create()
    {

    }

    public function store(Request $request)
    {
        try {
            $this->validate($request, [
                'email' => 'required|string',
                'password' => 'required|string'
            ]);
        } catch (ValidationException $e) {
        }

        $user_data = array(
            'email' =>  $request->get('email'),
            'password' =>  $request->get('password')
        );

        if(Auth::attempt($user_data)){
            return redirect('welcome');
        }
        else{
            return back()->with('error', 'Your details are incorrect');
        }

    }

    public function show(Authentication $authentication)
    {
        return view('welcome');
    }

    public function edit(Authentication $authentication)
    {

    }

    public function update(Request $request, Authentication $authentication)
    {

    }

    public function destroy(Authentication $authentication)
    {
//        Auth::logout();
//        return redirect('login');
    }
}

Просмотр

@yield('heading')
@yield('login')
@yield('sign-up')
@yield('footer')

<header><h2>Already a member?<br> Sign in here</h2></header>

<div class="container">

    <form method="POST" action="{{ route('login') }}">
        @csrf
        <label for="email">Enter Email</label>
        <input id="email" type="email" class="form-control @error('error') is-invalid @enderror"
               name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
        <label for="password">Enter Password</label>
        <input id="password" type="password"
               class="form-control @error('error') is-invalid @enderror" name="password" required
               autocomplete="current-password">
        <button type="submit" class="btn btn-primary">
            {{ __('Login') }}
        </button>
    </form>

</div>

Как видите, яЯ начал пытаться исправить проблему, но ошибка все еще продолжается, когда нажимается кнопка входа в систему.

Все, что я хочу сделать, - это войти на сайт, чтобы я мог просматривать комментарии в гостевой книге. и перенаправьте меня на страницу входа, если я не вошел в систему.

Любая помощь по этому вопросу будет принята с благодарностью, Бен:)

Обновлено 8/11/19 00:56.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Это не то, почему ваша форма не работает, а более приятный способ их разложить.

resources/views/layouts/app.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <meta name="application-name" content="{{ config('app.name') }}"/>
    <title>{{ config('app.name') }} @hasSection('title') - @yield('title')@endif</title>
    <link href="{{ secure_asset('css/app.css') }}" rel="stylesheet">
    @stack('styles')
</head>
<body>
    <div id="app">
        @include('partials.header')
        <main class="main-content">
            @yield('content')
        </main>
        @include('partials.footer')
    </div>
    <script src="{{ secure_asset('js/app.js') }}" defer></script>
    @stack('scripts')
</body>
</html>

resources/views/auth/login.blade.php

@extends('layouts.app')

@section('content')
    <form method="POST" action="{{ route('login') }}">
        @csrf
        <input id="email" type="email" class="form-control @error('email') is-invalid @enderror"
            name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
        <input id="password" type="password"
            class="form-control @error('password') is-invalid @enderror" name="password" required
            autocomplete="current-password">
        <button type="submit" class="btn btn-primary">
            {{ __('Login') }}
        </button>
    </form>
@endsection

@push('scripts')
    <script>
        // additional scripts if required.
    </script>
@endpush

от вашего контроллера

...
    public function index()
    {
        return view('auth.login');
    }
...
0 голосов
/ 08 ноября 2019

Вам нужно, чтобы ваша форма входа в HTML была введена в resources/view/login/auth.blade.php, чтобы отправить запрос в метод хранилища контроллера

Например,

<form method="POST" action="{{ route('login') }}">
    @csrf
    <input id="email" type="email" class="form-control @error('email') is-invalid @enderror"
        name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
    <input id="password" type="password"
        class="form-control @error('password') is-invalid @enderror" name="password" required
        autocomplete="current-password">
    <button type="submit" class="btn btn-primary">
        {{ __('Login') }}
    </button>
</form>

И установить login маршрут вroutes/web.php следующим образом

Route::post('/login', 'AuthController@store')->name('login');

Ошибка связана с запросом на получение по почтовому маршруту

Обновление

Измените код проверки на

$this->validate($request, [
  'username' => 'required|string',
  'password' => 'required|string',
]);

Нет правила проверки, которое называется username AFAIK

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...