Просмотр файла app/Http/Controllers/NotebookController.php

Размер файла: 1.91Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Notebook;
  9. use Illuminate\Http\RedirectResponse;
  10. use Illuminate\Http\Request;
  11. use Illuminate\View\View;
  12.  
  13. class NotebookController extends Controller
  14. {
  15. private $note;
  16.  
  17. /**
  18. * Конструктор
  19. */
  20. public function __construct()
  21. {
  22. $this->middleware('check.user');
  23.  
  24. $this->middleware(function ($request, $next) {
  25. $user = getUser();
  26.  
  27. $this->note = Notebook::query()
  28. ->where('user_id', $user->id)
  29. ->firstOrNew(['user_id' => $user->id]);
  30.  
  31. return $next($request);
  32. });
  33. }
  34.  
  35. /**
  36. * Главная страница
  37. *
  38. * @return View
  39. */
  40. public function index(): View
  41. {
  42. return view('notebooks/index', ['note' => $this->note]);
  43. }
  44.  
  45. /**
  46. * Редактирование
  47. *
  48. * @param Request $request
  49. * @param Validator $validator
  50. *
  51. * @return View|RedirectResponse
  52. */
  53. public function edit(Request $request, Validator $validator)
  54. {
  55. if ($request->isMethod('post')) {
  56. $msg = $request->input('msg');
  57.  
  58. $validator
  59. ->equal($request->input('_token'), csrf_token(), ['msg' => __('validator.token')])
  60. ->length($msg, 0, 10000, ['msg' => __('validator.text_long')], false);
  61.  
  62. if ($validator->isValid()) {
  63. $this->note->fill([
  64. 'text' => $msg,
  65. 'created_at' => SITETIME,
  66. ])->save();
  67.  
  68. setFlash('success', __('main.record_saved_success'));
  69. } else {
  70. setInput($request->all());
  71. setFlash('danger', $validator->getErrors());
  72. }
  73.  
  74. return redirect('notebooks');
  75. }
  76.  
  77. return view('notebooks/edit', ['note' => $this->note]);
  78. }
  79. }