после просмотра вашего user.blade.php обнаружил, что вы используете форму внутри таблицы, и это то, что мешает отправке формы. Также я нашел больше ошибок тоже. так что я улучшил его.
Найдены ошибки:
- Форма отправки внутри таблицы
- дубликаты названий маршрутов
- нет авторизации промежуточного программного обеспечения для пользовательских маршрутов
- нет подтверждения данных
- с использованием неправильных операторов использования
user.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Profile</div>
<div class="card-body">
@if($errors)
@foreach($errors->all() as $error)
<div class="alert alert-danger" role="alert">
{{ $error }}
</div>
@endforeach
@endif
{!! Form::model($user, ['route' => ['user.update'], 'method' => 'POST']) !!}
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
{!! Form::text('name', null, ['class' => 'form-control', 'id' => 'name']) !!}
</div>
</div>
<div class="form-group row">
<label for="email" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
{!! Form::text('email', null, ['class' => 'form-control', 'id' => 'email']) !!}
</div>
</div>
<div class="form-group">
{!! Form::submit('Submit', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
Я не большой поклонник коллектива Laravel
UserController.php
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class UserController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function show()
{
return view('user', ['user' => Auth::user()]);
}
/**
* @param Request $request
* @return
*/
public function update(Request $request)
{
// Get current user
$userId = Auth::id();
$user = User::findOrFail($userId);
// Validate the data submitted by user
$validator = Validator::make($request->all(), [
'name' => 'required|max:255',
'email' => 'required|email|max:225|'. Rule::unique('users')->ignore($user->id),
]);
// if fails redirects back with errors
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
// Fill user model
$user->fill([
'name' => $request->name,
'email' => $request->email
]);
// Save user to database
$user->save();
// Redirect to route
return redirect()->route('user');
}
}
web.php
<?php
// Auth routes
Auth::routes();
// User account routes
Route::get('user', 'UserController@show')->name('user');
Route::post('user/update', 'UserController@update')->name('user.update');
// other routes
Route::get('/', function () {
return view('welcome');
})->name('welcome');
Route::get('/home', 'HomeController@index')->name('home');
дополнительный наконечник
я рекомендую использовать политики авторизации laravel .
и если вы также хотите сделать приветственный маршрут доступным только для аутентификации пользователей, просто добавьте промежуточное программное обеспечение авторизации в приветственный маршрут - laravel docs