简体   繁体   中英

Why my post method doesn't work in Laravel?

I've created a form in Laravel to submit registration data to database. I've done this identically as other form in other view that works. Checked for typo's but still when I press submit button, nothing happens.

HTML of form in 'registrations/create.blade.php'

<form method="POST" action="{{route('registrations.store')}}"></form>
<div class="container">
    <p>Prašome užpildyti visus laukus.</p>
    <hr>
    @csrf

    <label for="vardas"><b>Vardas</b></label>
    <input type="text" placeholder="Įveskite savo vardą" name="vardas" required>

    <label for="pavarde"><b>Pavardė</b></label>
    <input type="text" placeholder="Įveskite savo pavardę" name="pavarde" required>

    <label for="el_pastas"><b>El. paštas</b></label>
    <input type="text" placeholder="Įveskite savo el. paštą" name="el_pastas" required>

    <label for="tel_nr"><b>Telefono nr.</b></label>
    <input type="text" placeholder="Įveskite savo telefono nr." name="tel_nr" required>

    <b>Pasirinkite norimą gitaros mokytoją</b><br><br>
    <input type="radio" name="mokytojas_id" value="1"> Petras Petrauskas<br>
    <input type="radio" name="mokytojas_id" value="2"> Andrius Rimiškis<br>
    <input type="radio" name="mokytojas_id" value="3"> Virgis Stakėnas<br>
    <hr>
    <button type="submit" class="registerbtn"><b>Registruotis</b></button>
</div>
</form>

'routes.web.php'

Route::get('/', 'PagesController@index');

Route::get('/contacts', 'PagesController@contacts');

Route::get('/form', 'PagesController@form');

Route::get('/guitarists', 'PagesController@guitarists');

Route::get('/news', 'PagesController@news');

Route::resource('questions', 'QuestionsController');

Route::resource('registrations', 'RegistrationsController');

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/admin', 'AdminController@dashboard');

Route::resource('guitarists', 'MokytojaiController');

Model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Registration extends Model
{
    protected $fillable = ['vardas', 'pavarde', 'el_pastas', 'tel_nr', 'mokytojas_id'];
}

Controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Registration;
class RegistrationsController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    //$questions = DB::select('SELECT * FROM questions');
    //$questions = Question::orderBy('id','desc')->take(1)->get();
    //$questions = Question::orderBy('id','desc')->get();

    $registrations = Registration::orderBy('id','desc')->paginate(10);
    return view ('registrations.index')->with('registrations', $registrations);
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('registrations.create');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{

    $request->validate([
        'vardas'    =>  'required',
        'pavarde'    =>  'required',
        'el_pastas'    =>  'required',
        'tel_nr'    =>  'required',
        'mokytojas_id'    =>  'required'
    ]);
    $post = $request->all();

    Registration::create($post);

    return redirect('/registrations/create')->with('status', 'Registracija atlikta!');
}

Your form tag is closed immediately.

<form method="POST" action="{{route('registrations.store')}}"></form>

Is this a type when you posted here or most probably this is the issue. Button is doing nothing since its not inside the form tag.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM