Невозможно сохранить в базе данных при использовании Laravel (версия 7.25)

#php #laravel #backend

#php #laravel #серверная часть

Вопрос:

Я пытаюсь получить доступ к Laravel Framework и застрял при получении значений со страницы в базе данных.

Это фрагменты моего контроллера, маршрутов, части просмотра, которые могут помочь в понимании того, что я делаю

web.php (для маршрутов):

 <?php

use IlluminateSupportFacadesRoute;

Route::resource('posts', 'PostController');
  

Postcontroller.php (просто фрагмент)

 <?php
public function create()
    {
        //
        return view('posts.create');
    }

       public function store(Request $request)
    {
        //
        $this->validate($request , array(
            'title' => 'required',
            'body' => 'required'
        ));
        $post = new Post;
        $post->title = $request->title;
        $post->body = $request->body;

        $post->save();

        return redirect()->route('posts.show', $post->id);
    }
  

create.blade.php (для просмотра)

 <div class="row">
    <div class="col-mid-8 col-md-offset-2" >
        <h1>Create New Post</h1>
        <hr>
        <form route='posts.store' >
            @csrf
            <div class="form-group">
              <label for="exampleInputEmail1">Email address</label>
              <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
              <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
            </div>
            <div class="form-group">
              <label for="exampleInputPassword1">Password</label>
              <input type="password" class="form-control" id="exampleInputPassword1">
            </div>
            <div class="form-group form-check">
              <input type="checkbox" class="form-check-input" id="exampleCheck1">
              <label class="form-check-label" for="exampleCheck1">Check me out</label>
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>
</div>
  

Комментарии:

1. Для передачи входных данных требуются name атрибуты. Нет входных данных с какими-либо именами, не говоря уже о чем-либо, помеченном title или body .

Ответ №1:

Проблема с вашим кодом заключается в том, что у вас нет name свойств при вводе, поэтому в ваш внутренний код ничего не передается.

Добавьте имя к своим входным данным следующим образом (они должны быть другими, иначе они будут перезаписаны):

 <input type="text" class="form-control" id="your-unique-input-id" name"your_unique_input_name">
  

Затем, когда вы отправляете свою форму, все входные данные, в которых есть name атрибут, будут переданы вашему серверному методу. Затем вы можете получить их значение, используя name , которое вы указали им ранее. Итак, в этом примере:

 $request->your_unique_input_name // Which will return anything that user typed in that field