Не могу получить входные данные из формы LARAVEL - PullRequest
0 голосов
/ 31 октября 2018

Я изучаю Laravel и застрял, пытаясь получить данные из формы.

Я уже могу вернуть данные с помощью GET, но с POST у меня куча проблем. Вот с чем я работаю:

Форма:

<form id="forms" method="POST" action="sugestoes" novalidate>

  {{ csrf_field() }}

  <div class="form-row">

    <div class="form-group col-md-12">
      <label for="obs">Observações:</label>
      <textarea type="text" class="form-control" name="obs" placeholder="Observações" required></textarea>
    </div>

  </div>

    <hr>

  <button type="submit" class="btn btn-primary">Enviar</button>

</form>

  @php 

  if (isset($_POST["obs"])) {
    echo "IN";
  }

  @endphp

Контроллер:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{

    public function store(Request $request)
    {
        $name = $request->input('obs');

        return redirect('sugestoes');


        //
    }
}

Маршрут:

Route::post('sugestoes', 'PostController@store');

Предполагаемое поведение, которого я пытаюсь достичь, - это отправить сообщение, а затем вернуться на ту же страницу с пустой формой. Позже я буду отправлять входные данные в базу данных, но сейчас я просто хочу заставить почту работать.

Полагаю, мне не хватает чего-то действительно базового, но я следовал инструкциям и смотрел в Интернете, я добился определенного прогресса, но я действительно застрял здесь.

(дополнительная информация, это Laravel 5.4, и я использую XAMPP)

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Сначала вам нужно вызвать модель, use App/Your_model_name;, затем вам нужно сохранить данные.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Suggest; //Suggest model, let's hope you have suggest table

class PostController extends Controller
{

  public function store(Request $request)
  {
    $suggest = new Suggest; //model
    $suggest->name = $request->obs; //name is DB name, obs is request name
    $suggest->save(); //save the post to DB

    return redirect()->back()->with('success', 'Saved successfully'); //return back with message
  }
}

Тогда, если вы хотите прошить сообщение на HTML-странице

@if(session('success'))
  <div class="alert alert-warning alert-dismissible" id="error-alert">
     <strong style="color: white;">{{session('success')}}</strong>
  </div>
@endif
0 голосов
/ 31 октября 2018
<form id="forms" method="POST" action="{{ route('sugestoes') }}" novalidate>
 {{ csrf_field() }}
<div class="form-row">

<div class="form-group col-md-12">
  <label for="obs">Observações:</label>
  <textarea type="text" class="form-control" name="obs" placeholder="Observações" required></textarea>
 </div>

</div>



   <button type="submit" class="btn btn-primary">Enviar</button>

  </form>

Удалите тег @php под формой, затем в router.php

Route::post('/sugestoes', 'PostController@store')->name('sugestoes');

Затем в контроллере:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{

public function store(Request $request)
{
    $name = $request->input('obs');

   return redirect('/sugestoes'); // you should have GET in Route.php


    //
  }
}
0 голосов
/ 31 октября 2018

Добавьте следующий код в свой атрибут действия в форме. Это захватит URL поста. Когда вы отправляете форму, она отправляет данные формы в конечную точку URL.

action="{{ url('sugestoes')}}"

Затем умрите и сбросьте в функции контроллера вашего магазина

public function store(Request $request)
{
    dd($request->all());

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...