add file resource
This commit is contained in:
parent
df05cd21f4
commit
95deb4cefe
|
@ -0,0 +1,93 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\StoreFileRequest;
|
||||||
|
use App\Http\Requests\StoreReceptionScreenRequest;
|
||||||
|
use App\Http\Requests\UpdateFileRequest;
|
||||||
|
use App\Http\Requests\UpdateReceptionScreenRequest;
|
||||||
|
use App\Models\File;
|
||||||
|
use App\Models\ReceptionScreen;
|
||||||
|
use App\Services\WorkWithFiles;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Contracts\View\Factory;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\Foundation\Application;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class FileController extends Controller
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->middleware('auth');
|
||||||
|
}
|
||||||
|
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
||||||
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
|
$files = File::all()->sortBy('position');
|
||||||
|
return view('files.index', compact('files'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create($idReceptionScreen = null): View
|
||||||
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
|
$receptionScreens = ReceptionScreen::pluck('name', 'id');
|
||||||
|
$idsReceptionScreens = $receptionScreens->keys()->toArray();
|
||||||
|
$files = File::where('reception_screen_id', '=', $idReceptionScreen)->get();
|
||||||
|
return view('files.create', compact('receptionScreens', 'idsReceptionScreens', 'idReceptionScreen', 'files'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(StoreFileRequest $request)
|
||||||
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
|
$content = $request->file('url');
|
||||||
|
WorkWithFiles::saveFileToUploads($content);
|
||||||
|
$newPath = WorkWithFiles::renameFile($content);
|
||||||
|
|
||||||
|
$validated = $request->validated();
|
||||||
|
$file = new File();
|
||||||
|
$file->name = $validated['name'];
|
||||||
|
$file->url = $newPath;
|
||||||
|
$file->position = $validated['position'];
|
||||||
|
$file->reception_screen_id = $validated['idReceptionScreen'];
|
||||||
|
$file->save();
|
||||||
|
return redirect()->route('files.index');
|
||||||
|
}
|
||||||
|
public function edit(int $idFile)
|
||||||
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
|
$file = (new File())->find($idFile);
|
||||||
|
$files = File::where('reception_screen_id', '=', $file->reception_screen_id)->get();
|
||||||
|
|
||||||
|
$receptionScreens = ReceptionScreen::pluck('name', 'id');
|
||||||
|
$idsReceptionScreens = $receptionScreens->keys()->toArray();
|
||||||
|
$idReceptionScreen = $file->reception_screen_id;
|
||||||
|
return view('files.edit', compact('receptionScreens', 'idsReceptionScreens', 'idReceptionScreen', 'files', 'file'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(UpdateFileRequest $request, File $file)
|
||||||
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
|
$validated = $request->validated();
|
||||||
|
|
||||||
|
$file->name = $validated['name'];
|
||||||
|
$file->position = $validated['position'];
|
||||||
|
$file->reception_screen_id = $validated['idReceptionScreen'];
|
||||||
|
$file->save();
|
||||||
|
return redirect()->route('admin-reception-screen.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy($idFile)
|
||||||
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
|
$file = (new File())->find($idFile);
|
||||||
|
$file->delete();
|
||||||
|
return redirect()->route('admin-reception-screen.index');
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,6 +18,8 @@ class ReceptionScreenController extends Controller
|
||||||
}
|
}
|
||||||
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
||||||
{
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
$receptionScreens = ReceptionScreen::all()->sortBy('position');
|
$receptionScreens = ReceptionScreen::all()->sortBy('position');
|
||||||
return view('admin-reception-screen.index', compact('receptionScreens'));
|
return view('admin-reception-screen.index', compact('receptionScreens'));
|
||||||
}
|
}
|
||||||
|
@ -32,6 +34,8 @@ class ReceptionScreenController extends Controller
|
||||||
|
|
||||||
public function store(StoreReceptionScreenRequest $request)
|
public function store(StoreReceptionScreenRequest $request)
|
||||||
{
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
$validated = $request->validated();
|
$validated = $request->validated();
|
||||||
$receptionScreen = new ReceptionScreen();
|
$receptionScreen = new ReceptionScreen();
|
||||||
$receptionScreen->name = $validated['name'];
|
$receptionScreen->name = $validated['name'];
|
||||||
|
@ -52,6 +56,8 @@ class ReceptionScreenController extends Controller
|
||||||
|
|
||||||
public function update(UpdateReceptionScreenRequest $request, $id)
|
public function update(UpdateReceptionScreenRequest $request, $id)
|
||||||
{
|
{
|
||||||
|
abort_if(Auth::guest(), 403);
|
||||||
|
|
||||||
$validated = $request->validated();
|
$validated = $request->validated();
|
||||||
$receptionScreen = new ReceptionScreen();
|
$receptionScreen = new ReceptionScreen();
|
||||||
$currentReceptionScreen = $receptionScreen->find($id);
|
$currentReceptionScreen = $receptionScreen->find($id);
|
||||||
|
|
|
@ -6,10 +6,6 @@ use Illuminate\Http\Request;
|
||||||
|
|
||||||
class UploadFileController extends Controller
|
class UploadFileController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
return view('uploadfile');
|
|
||||||
}
|
|
||||||
public function showUploadFile(Request $request)
|
public function showUploadFile(Request $request)
|
||||||
{
|
{
|
||||||
$file = $request->file('image');
|
$file = $request->file('image');
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class StoreFileRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => 'max:255',
|
||||||
|
'position' => 'int|max:255',
|
||||||
|
'url' => 'file',
|
||||||
|
'idReceptionScreen' => 'int|max:255',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class UpdateFileRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => 'required|max:255',
|
||||||
|
'position' => 'required||int|max:255',
|
||||||
|
'idReceptionScreen' => 'int|max:255',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class WorkWithFiles
|
||||||
|
{
|
||||||
|
public static function saveFileToUploads($content)
|
||||||
|
{
|
||||||
|
$destinationPath = 'uploads';
|
||||||
|
$content->move($destinationPath, $content->getClientOriginalName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function renameFile($content)
|
||||||
|
{
|
||||||
|
$nameChunks = explode('.', $content->getClientOriginalName());
|
||||||
|
array_splice($nameChunks, 1);
|
||||||
|
$timestamp = Carbon::now();
|
||||||
|
$name = implode('.', $nameChunks);
|
||||||
|
$newName = "{$name}{$timestamp}.{$content->getClientOriginalExtension()}";
|
||||||
|
|
||||||
|
$dir = __DIR__;
|
||||||
|
$path = "{$dir}/../../public/uploads/";
|
||||||
|
$oldName = $content->getClientOriginalName();
|
||||||
|
rename("{$path}{$oldName}", "{$path}{$newName}");
|
||||||
|
return "{$path}{$newName}";
|
||||||
|
}
|
||||||
|
}
|
|
@ -43,11 +43,11 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{{ $file->position }}</th>
|
<th scope="row">{{ $file->position }}</th>
|
||||||
<td>{{ $file->name }}</td>
|
<td>{{ $file->name }}</td>
|
||||||
<td><a href="{{ route("admin-reception-screen.edit", $file) }}"
|
<td><a href="{{ route("files.edit", $file) }}"
|
||||||
class="btn btn-secondary">редактировать</a>
|
class="btn btn-secondary">редактировать</a>
|
||||||
<a rel="nofollow" data-method="delete"
|
<a rel="nofollow" data-method="delete"
|
||||||
data-confirm="Вы действительно хотите удалить?"
|
data-confirm="Вы действительно хотите удалить?"
|
||||||
href="{{ route('admin-reception-screen.destroy', $file) }}"
|
href="{{ route('files.destroy', $file) }}"
|
||||||
class="btn btn-danger">
|
class="btn btn-danger">
|
||||||
удалить
|
удалить
|
||||||
</a>
|
</a>
|
||||||
|
@ -58,7 +58,7 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<a href="{{ route('admin-reception-screen.create') }}"
|
<a href="{{ route('files.create', $receptionScreen->id) }}"
|
||||||
class="btn btn-primary">
|
class="btn btn-primary">
|
||||||
Добавить файл
|
Добавить файл
|
||||||
</a>
|
</a>
|
||||||
|
@ -68,7 +68,8 @@
|
||||||
@else
|
@else
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<a href="{{ route('admin-reception-screen.create') }}" class="btn btn-primary">Добавить
|
@php($idReceptionScreen = $receptionScreen->id)
|
||||||
|
<a href="{{ route('files.create', $idReceptionScreen) }}" class="btn btn-primary">Добавить
|
||||||
файл</a>
|
файл</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -78,11 +79,5 @@
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
{{ Form::open(array('url' => route('uploadfile'), 'method' => 'POST', 'files'=>'true')) }}
|
|
||||||
Select the file to upload.
|
|
||||||
{{ Form::file('image') }}
|
|
||||||
{{ Form::submit('Upload File')}}
|
|
||||||
{{Form::close()}}
|
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
@extends('layouts.admin-layout')
|
||||||
|
@section('content')
|
||||||
|
@auth()
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="">Прикрепить файл</h1>
|
||||||
|
{{ Form::open(array('url' => route('files.store'), 'method' => 'POST', 'files'=>'true')) }}
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('url', 'Путь к файлу') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::file('url', ['class' => 'form-control']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('url') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('name', 'Имя файла') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::text('name', '', ['class' => 'form-control']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('name') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('position', 'Позиция') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::text('position', 0, ['class' => 'form-control']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('name') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('idReceptionScreen', 'Пункт экрана приема') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::select('idReceptionScreen', $receptionScreens, $idReceptionScreen, $idsReceptionScreens,['class' => 'form-select']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('idReceptionScreen') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-4">
|
||||||
|
{{ Form::submit('Загрузить файл', ['class' => 'btn btn-primary'])}}
|
||||||
|
</div>
|
||||||
|
{{Form::close()}}
|
||||||
|
</div>
|
||||||
|
@if($idReceptionScreen !== null)
|
||||||
|
<div class="col">
|
||||||
|
<h2>Файлы пункта Экрана Приема: {{ $receptionScreens[$idReceptionScreen] }}</h2>
|
||||||
|
<table class="table">
|
||||||
|
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Позиция</th>
|
||||||
|
<th scope="col">Название</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach($files as $file)
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{ $file->position }}</th>
|
||||||
|
<th scope="row">{{ $file->name }}</th>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
@endauth
|
||||||
|
@endsection
|
|
@ -0,0 +1,68 @@
|
||||||
|
@extends('layouts.admin-layout')
|
||||||
|
@section('content')
|
||||||
|
@auth()
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="">Изменить файл</h1>
|
||||||
|
{{ Form::open(array('url' => route('files.update', $file), 'method' => 'PATCH', 'files'=>'true')) }}
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('name', 'Имя файла') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::text('name', $file->name, ['class' => 'form-control']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('name') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('position', 'Позиция') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::text('position', $file->position, ['class' => 'form-control']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('name') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::label('idReceptionScreen', 'Пункт экрана приема') }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
{{ Form::select('idReceptionScreen', $receptionScreens, $idReceptionScreen, $idsReceptionScreens,['class' => 'form-select']) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if ($errors->any())
|
||||||
|
{{ $errors->first('idReceptionScreen') }}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="mt-4">
|
||||||
|
{{ Form::submit('Загрузить файл', ['class' => 'btn btn-primary'])}}
|
||||||
|
</div>
|
||||||
|
{{Form::close()}}
|
||||||
|
</div>
|
||||||
|
@if($idReceptionScreen !== null)
|
||||||
|
<div class="col">
|
||||||
|
<h2>Файлы пункта Экрана Приема: {{ $receptionScreens[$idReceptionScreen] }}</h2>
|
||||||
|
<table class="table">
|
||||||
|
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Позиция</th>
|
||||||
|
<th scope="col">Название</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach($files as $file)
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{ $file->position }}</th>
|
||||||
|
<th scope="row">{{ $file->name }}</th>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
@endauth
|
||||||
|
@endsection
|
|
@ -0,0 +1,36 @@
|
||||||
|
@extends('layouts.admin-layout')
|
||||||
|
@section('content')
|
||||||
|
<div class="container">
|
||||||
|
<h2>Файлы</h2>
|
||||||
|
<br>
|
||||||
|
<a href="{{ route('files.create') }}" class="btn btn-primary">Добавить файл</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<table class="table">
|
||||||
|
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Позиция</th>
|
||||||
|
<th scope="col">Название файла</th>
|
||||||
|
<th scope="col">Экран Приема</th>
|
||||||
|
<th scope="col">действия</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach($files as $file)
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{ $file->position }}</th>
|
||||||
|
<td>{{ $file->name }}</td>
|
||||||
|
<td>{{ $file->receptionScreen->name }}</td>
|
||||||
|
<td><a href="{{ route("files.edit", $file) }}" class="btn btn-secondary">редактировать</a>
|
||||||
|
<a rel="nofollow" data-method="delete" data-confirm="Вы действительно хотите удалить?"
|
||||||
|
href="{{ route('files.destroy', $file) }}" class="btn btn-danger">
|
||||||
|
удалить
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
@endsection
|
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\FileController;
|
||||||
use App\Http\Controllers\ReceptionScreenController;
|
use App\Http\Controllers\ReceptionScreenController;
|
||||||
use App\Http\Controllers\ProfileController;
|
use App\Http\Controllers\ProfileController;
|
||||||
use App\Http\Controllers\UploadFileController;
|
use App\Http\Controllers\UploadFileController;
|
||||||
|
@ -21,10 +22,15 @@ Route::get('/', function () {
|
||||||
return view('home');
|
return view('home');
|
||||||
})->name('home');
|
})->name('home');
|
||||||
|
|
||||||
Route::resources([
|
Route::resource('/users', UserController::class)->middleware(['auth', 'verified']);
|
||||||
'/users' => UserController::class,
|
Route::resource('/admin-reception-screen', ReceptionScreenController::class)->middleware(['auth', 'verified']);
|
||||||
'/admin-reception-screen' => ReceptionScreenController::class
|
//Route::resource('/files', FileController::class)->middleware(['auth', 'verified']);
|
||||||
]);
|
Route::get('/files', [FileController::class, 'index'])->name('files.index');
|
||||||
|
Route::post('/files', [FileController::class, 'store'])->name('files.store');
|
||||||
|
Route::get('/files/create/{file?}', [FileController::class, 'create'])->name('files.create');
|
||||||
|
Route::patch('/files/{file}', [FileController::class, 'update'])->name('files.update');
|
||||||
|
Route::delete('files/{file}', [FileController::class, 'destroy'])->name('files.destroy');
|
||||||
|
Route::get('/files/edit/{file}', [FileController::class, 'edit'])->name('files.edit');
|
||||||
|
|
||||||
Route::get('/course', function () {
|
Route::get('/course', function () {
|
||||||
return view('menu.course');
|
return view('menu.course');
|
||||||
|
@ -62,7 +68,6 @@ Route::get('/video-materials-for-applicants', function () {
|
||||||
return view('menu.abitur.videomaterialy-dlya-postupayushchikh');
|
return view('menu.abitur.videomaterialy-dlya-postupayushchikh');
|
||||||
})->name('videomaterialy-dlya-postupayushchikh');
|
})->name('videomaterialy-dlya-postupayushchikh');
|
||||||
|
|
||||||
Route::post('/uploadfile', [UploadFileController::class, 'showUploadFile'])->name('uploadfile');
|
|
||||||
|
|
||||||
Route::get('/dashboard', function () {
|
Route::get('/dashboard', function () {
|
||||||
return view('admin');
|
return view('admin');
|
||||||
|
|
Loading…
Reference in New Issue