Я бы хотел использовать метод show для внутренних пользователей.
вот мои маршруты
<?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');
});
Auth::routes();
Route::resource('/admin', 'AdminController');
Route::resource('/farm', 'FarmController');
Route::resource('/clinic', 'ClinicController');
Route::resource('/slaughter', 'SlaughterController');
Route::get('/home', 'HomeController@index')->name('home');
мой контроллер администратора
<?php
namespace App\Http\Controllers;
use App\Role;
use App\User;
use Illuminate\Http\Request;
class AdminController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$user = User::all();
return view('admin.index', compact('user'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param User $user
* @return \Illuminate\Http\Response
*/
public function show()
{
$user = User::all();
return view('admin.show', compact('user'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
мой админ / индекс
@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">Admin Dashboard</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
Welcome! {{ Auth::user()->name }}
@foreach($user as $user)
<div class="row">
<div class="col-2">{{ $user->id }}</div>
<div class="col-4"><a href="/admin/{{ $user->id }}">{{ $user->name }}</a></div>
<div class="col-4">{{ $user->role->description }}</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
@endsection
и мой админ / шоу
@extends('layouts.app')
@section('title', 'Details for ' . $user->name )
@section('content')
<div class="row">
<div class="col-12">
<h1>Details for {{ $user->name }}</h1>
<a href="/admin/{{ $user->id }}/edit">Edit</a>
<form action="/admin/{{ $user->id }}" method="POST">
@method('DELETE')
@csrf
<button class="btn btn-danger" type="submit">Delete</button>
</form>
</div>
</div>
<div class="row">
<div class="col-12">
<p><strong>Name: </strong>{{ $user->name }}</p>
<p><strong>Email: </strong>{{ $user->email }}</p>
<p><strong>Role: </strong>{{ $user->role->description }}</p>
</div>
</div>
@endsection
Но выдает эту ошибку
Свойство [имя] не существует в этом экземпляре коллекции. (Просмотр: /Users/macair13/MeatracProject/resources/views/admin/show.blade.php)
А также я создал роль таблицы с role_id в качестве внешнего ключа в таблице пользователей.
Я бы хотел, чтобы только мой администратор мог регистрировать, редактировать, удалять пользователей и ограничивать доступ к ним только для него самого. Как мне справиться с этим тоже. Любая помощь будет приветствоваться