<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Services;
use Illuminate\Http\Request;
class ServicesController extends Controller
{
public function index()
{
$allservices = Services::orderBy('title', 'desc')->get();
return view('admin.services.index', [
'allservices' => $allservices
]);
}
public function create()
{
return view('admin.services.create');
}
public function store(Request $request)
{
$new_service = new Services();
$new_service->title = $request->title;
$new_service->text = $request->description;
$new_service->image = $request->image;
$new_service->save();
return redirect()->back()->withSuccess('Услуга была успешно добавлена');
}
public function edit(Services $services)
{
return view('admin.services.edit', [
'services' => $services
]);
}
public function update(Request $request, Services $services)
{
$services->title = $request->title;
$services->text = $request->description;
$services->image = $request->image;
$services->save();
return redirect()->back()->withSuccess('Услуга была успешно обновлена');
}
}
@extends('layouts.admin_layout')
@section('title', 'Все услуги')
@section('content')
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0">Все услуги</h1>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="card">
<div class="card-body p-0">
<table class="table table-striped projects">
<thead>
<tr>
<th style="width: 1%">ID</th>
<th style="width: 20%">Название</th>
<th style="width: 30%">Описание</th>
<th style="width: 20%">Изображение</th>
<th style="width: 20%"></th>
</tr>
</thead>
<tbody>
@foreach ($allservices as $services)
<tr>
<td>{{ $services['id'] }}</td>
<td>{{ $services['title'] }}</td>
<td>{{ $services['text'] }}</td>
<td>{{ $services['image'] }}</td>
<td class="project-actions text-right">
<a class="btn btn-primary btn-sm" href="#"><i class="fas fa-folder"></i>Просмотр</a>
<a class="btn btn-info btn-sm" href="{{ route('services.edit', $services['id']) }}"><i class="fas fa-pencil-alt"></i>Изменить</a>
<a class="btn btn-danger btn-sm" href="#"><i class="fas fa-trash"></i>Удалить</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.card-body -->
</div>
</div><!-- /.container-fluid -->
</section>
<!-- /.content -->
@endsection
@extends('layouts.admin_layout')
@section('title', 'Редактирование услуги')
@section('content')
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0">Редактирование услуги: {{ $services['title'] }}</h1>
</div><!-- /.col -->
</div><!-- /.row -->
@if (session('success'))
<div class="alert alert-success" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4><i class="icon fa fa-check"></i>{{ session('success') }}</h4>
</div>
@endif
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card card-primary">
<!-- form start -->
<form action="{{ route('services.update', $services['id']) }}" method="POST">
@csrf
@method('PUT')
<div class="card-body">
<div class="form-group">
<label for="exampleInputEmail1">Наименование</label>
<input type="text" value="{{ $services['title'] }}" name="title"
class="form-control" id="exampleInputEmail1" placeholder="Введите название услуги"
required>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Описание</label>
<input type="text" value="{{ $services['text'] }}" name="description"
class="form-control" id="exampleInputPassword1"
placeholder="Введите описание услуги" required>
</div>
<div class="form-group">
<label for="exampleInputFile">Изображение</label>
<div class="input-group">
<div class="custom-file">
<input type="file" value="{{ $services['image'] }}" name="image"
class="custom-file-input" id="exampleInputFile">
<label class="custom-file-label" for="exampleInputFile">Choose file</label>
</div>
<div class="input-group-append">
<span class="input-group-text">Upload</span>
</div>
</div>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-primary">Обновить</button>
</div>
</form>
</div>
</div>
</div>
</div><!-- /.container-fluid -->
</section>
<!-- /.content -->
@endsection
Route::resource('services', ServicesController::class);
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('services', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('text');
$table->string('image');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('services');
}
};
URI: admin_panel/services/{service} Missing parameter: service
action="{{ route('services.update', $services['id']) }}"указан не на той форме, которая отправляется (надо проверить html форму прежде чем нажать сабмит, если это так то надо привести отправляемую форму в порядок)
action="{{ route('services.update', $services['id']) }}"не всегда был
$services['id'], а после добавления его в шаблон на фронте страница не обновлялась или закеширована (надо проверить html формы прежде чем нажать сабмит, если это так, то надо обновить страницу и проверить html формы еще раз, если в поле action все еще не подставлен айдишник, то надо выполнить
php artisan view:clear
на сервере и обновить страницу на фронте, если не помогает, то надо проверить, что измененный шаблон подкинут на сервер, а не лежит чисто локально