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

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