Ошибка 404 при попытке отправить форму в laravel - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь отправить форму для звонков в мою базу данных, используя laravel eloquent, но каждый раз, когда я пытаюсь, она всегда выдает ошибку 404.

Вот мой web.php

Route::get('/calls/newCall', 'CallsController@newCall');
Route::get('/calls/addNewCall', 'CallsController@create');
Route::resource('new_calls', 'CallsController');

Это моя CallsController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\new_calls;

class CallsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function viewCall($id){ // the id in the url

        $new_calls = new_calls::find($id);

        return view('calls.viewCall')->with('new_calls', $new_calls);
    }

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // validate data
        $this->validate($request, array(
           'terminal_id'=> 'required',
           'terminal_name'=> 'required',
        ));

        // store in the database
        $call = new new_calls;
        $call->terminal_id = $request->terminal_id;
        $call->terminal_name = $request->terminal_name;

        $call->save();

        //redirect
        return redirect()->route('new_calls.show', $call->id);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Это моя форма

<form action="CallController@new_calls.store" method="post">
    @csrf
    <div class="col-md-6">
        <div class="input-group" style="width: 100%;">
            <label for="terminal_id">{{ __('Terminal ID') }}</label><br>
            <input type="text" name="terminal_id" id="terminal_id" class="form-control" placeholder="Enter the Terminal ID" style="padding: 20px;" required>
        </div>
    </div>
    <div class="col-md-6">
        <div class="input-group col-md-12" style="width: 100%;">
            <label for="terminal_name">{{ __('Terminal name') }}</label><br>
            <input type="text" name="terminal_name" id="terminal_name" class="form-control" placeholder="Enter Terminal Name" style="padding: 20px;" required>
        </div>
    </div>

    <button type="submit" class="btn-primary" style="padding: 10px; font-size: 16px; border: 0;">{{ __('Submit') }}</button>
</form>

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Попробуйте:

<form action="{{ action('CallController@store') }}" method="post">

Источник: URL-адреса для действий контроллера

0 голосов
/ 13 ноября 2018

Это HTML-контекст, где действие формы - это буквально URL, на который вы пытаетесь отправить форму.Вы не используете синтаксис шаблона блейда или не вызываете какую-либо функцию Laravel в назначении действия формы.Вы также неправильно определяете действие маршрута.

Вы можете использовать имя маршрута:

route('new_calls.store');

Или использовать действие:

action('CallsController@store');

Вы используете их комбинацию.

Правильно замените действие формы:

<form action="{{ route('new_calls.store') }}" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...