Метод post не поддерживается для этого маршрута - PullRequest
0 голосов
/ 02 апреля 2019

Я новичок в laravel и хочу отправить форму с тремя вложениями и несколькими массивами

но когда я нажимаю кнопку отправки, laravel говорит

"Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD."

Я много искал, но не нашел ошибок

My View

<div>
    <form action="insertquotation" method="post" enctype="multipart/form-data">
        @csrf
        <table border="1" id="formTable">
            <thead>
            <tr>
                <td>procurment_request_number</td>
                <td>quotationer</td>
                <td>shop_name</td>
                <td>shop_account_number</td>
                <td>shop_permit</td>
                <td>shop_quatation</td>
            </tr>
            </thead>

            <tbody>
            <tr>
                <td>
                    <input type="text" name="procurment_request_number" id="procurment_request_number" value="{{$result->first()->request_number}}">
                    {{--<select name="procurment_request_number[]" id="procurment_request_number">--}}
                        {{--@foreach($result as $results)--}}
                            {{--<option value="{{$results->request_number}}">{{$results->request_number}}</option>--}}
                            {{--@endforeach--}}
                    {{--</select>--}}
                </td>
                <td><input type="text" id="quotationer1" name="quotationer1"></td>
                <td><input type="text" name="shop_name1" id="shop1_name"></td>
                <td><input type="text" name="shop_account_number1" id="shop1_account_number"></td>
                <td><input type="text" name="shop_permit1" id="shop1_permit"></td>
                <td><input type="file" accept="application/pdf" name="shop_quatation1" id="shop_quatation"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="text" id="quotationer" name="quotationer2"></td>
                <td><input type="text" name="shop_name2" id="shop1_name"></td>
                <td><input type="text" name="shop_account_number2" id="shop1_account_number"></td>
                <td><input type="text" name="shop_permit2" id="shop1_permit"></td>
                <td><input type="file" accept="application/pdf" name="shop_quatation2" id="shop_quatation"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="text" id="quotationer" name="quotationer3"></td>
                <td><input type="text" name="shop_name3" id="shop1_name"></td>
                <td><input type="text" name="shop_account_number3" id="shop1_account_number"></td>
                <td><input type="text" name="shop_permit3" id="shop1_permit"></td>
                <td><input type="file" accept="application/pdf" name="shop_quatation3" id="shop_quatation"></td>
            </tr>
                <tr>
                    <td>Item_ID</td>
                    <td>Quantity</td>
                    <td>Unit_ID</td>
                    <td>description</td>
                    <td>Shop1_price</td>
                    <td>Shop2_price</td>
                    <td>Shop3_price</td>
                </tr>
                @foreach($result as $results)
                <tr>
                    <td><input type="text" name="itemid[]" id="itemid" value="{{$results->id}}"></td>
                    <td><input type="text" name="quantity[]" id="quantity" value="{{$results->quantity}}"></td>
                    <td><input type="text" name="units_id[]" id="units_id" value="{{$results->units_id}}"></td>
                    <td><input type="text" name="description[]" id="description" value="{{$results->description}}"></td>
                    <td><input type="text" name="shop1_price[]" id="shop1_price"></td>
                    <td><input type="text" name="shop2_price[]" id="shop2_price"></td>
                    <td><input type="text" name="shop3_price[]" id="shop3_price"></td>
                </tr>
                </tbody>
            @endforeach
        </table>
        {{--<input value="addrow" type="button" id="addrow"  onclick="javascript: addRow();">--}}
        <input type="submit" value="submit">
    </form>
</div>

Мой контроллер


public function insertquotation(request $request)
{
    if ($file = $request->file('shop1_quatation')) {
        $name = $file->getClientOriginalName();
        $file->move('procurement_files', $name);
        $file2 = $request->file('shop2_quatation');
        $name2 = $file2->getClientOriginalName();
        $file2->move('procurement_files', $name2);
        $file3 = $request->file('shop2_quatation');
        $name3 = $file2->getClientOriginalName();
        $file3->move('procurement_files', $name3);
        $procurment_request_number = $request->input('procurment_request_number');
        $quotationer1 = $request->input('quotationer1');
        $quotationer2 = $request->input('quotationer2');
        $quotationer3 = $request->input('quotationer3');
        $shop_name1 = $request->input('shop_name1');
        $shop_account_number1 = $request->input('shop_account_number1');
        $shop_permit1 = $request->input('shop_permit1');
        $shop_name2 = $request->input('shop_name2');
        $shop_account_number2 = $request->input('shop_account_number2');
        $shop_permit2 = $request->input('shop_permit2');
        $shop_name3 = $request->input('shop_name3');
        $shop_account_number3 = $request->input('shop_account_number3');
        $shop_permit3 = $request->input('shop_permit3');
        $numbers = $request->input('itemid');
        for ($i = 0; $i < count($numbers); $i++) {
            $itemid = $request->input('itemid');
            $shop1_price = $request->input('shop1_price');
            $shop2_price = $request->input('shop2_price');
            $shop3_price = $request->input('shop3_price');
            DB::insert("INSERT INTO procurment_quotations (`procurment_request_number`, `itemid`, `quotationer1`, `quotationer2`, `quotationer3`, `shop1_name`, `shop1_account_number`, `shop1_permit`, `shop1_quatation`, `shop1_price`, `shop2_name`, `shop2_account_number`, `shop2_permit`, `shop2_quatation`, `shop2_price`, `shop3_name`, `shop3_account_number`, `shop3_permit`, `shop3_quatation`, `shop3_price`, `created_at`, `updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,)", [$procurment_request_number, $itemid[$i],$quotationer1,$quotationer2,$quotationer3,$shop_name1,$shop_account_number1,$shop_permit1,$name,$shop1_price,$shop_name2,$shop_account_number2,$shop_permit2,$name2,$shop2_price,$shop_name3,$shop_account_number3,$shop_permit3,$name3,$shop3_price]);
        }
    }
}

и мой маршрут

Route::Post('insertquotation','Home@insertquotation');

Ошибка

"Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD."

Ответы [ 3 ]

2 голосов
/ 02 апреля 2019

Изменение в вашем блейд-файле:

<form method="POST" enctype="multipart/form-data" action="{{ route('insertquotation') }}">

Измените Post на post в вашем routs / web.php файле:

Route::post('insertquotation','Controllername@methodname')->name('insertquotation');
2 голосов
/ 02 апреля 2019

Пара вещей, которые мне нужно указать в вашем коде

Всегда лучше использовать имена маршрутов при создании маршрутов, так что когда вам нужно изменить URL-адрес маршрута на что-то другое, вам нужно только изменить его в файле маршрутов (не просматривать файлы)

Route::post('insertquotation','Home@insertquotation')->name('insertquotation');

Теперь внутри вашего взгляда, вам нужно сделать это

<form method="POST" enctype="multipart/form-data" action="{{ route('insertquotation') }}"> ... </form>

В будущем, когда вы захотите (возможно, нет) изменить URL-адрес на /quotation/insert, все, что вам нужно сделать, это изменить его в файле маршрутов.

Теперь внутри вашего контроллера,

Существует функция, позволяющая проверить, существует ли файл $request->hasFile('shop1_quatation'), который более правильно использовать внутри условия if, а не передавать его в файл.

Кроме того, гораздо удобнее использовать Laravel eloquent для вставки данных в базу данных. Узнайте больше здесь

2 голосов
/ 02 апреля 2019

Я думаю, что из action="insertquotation", вы должны превратить его в action="{{url('insertquotation')}}"

И могу ли я увидеть коды в вашем файле routes/web.php? Вы должны объявить маршрут insertquotation там

Например:

Route::post('insertquotation', 'YourController@yourMethod');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...