ErrorException Неопределенный индекс: расположение в форме создания - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь добавить в базу данных строку для объектов типа «Событие». Всякий раз, когда я нажимаю кнопку создания в форме HTML, я получаю сообщение об ошибке «Неопределенный индекс: местоположение».

Это моя функция сохранения:

public function save(CreateEvent $request)
{
    $validated = $request->validated();

    $event = new Event();
    $event->event_name = $validated['name'];
    $event->event_description = $validated['description'];

    $event->event_location_id = $validated['location'];

    if ($validated['website'] != null) {
        $event->event_website = $validated['website'];

    }

    if ($validated['facebook'] != null) {
        $event->event_facebook = $validated['facebook'];

    }
    if ($validated['twitter'] != null) {
        $event->event_twitter = $validated['twitter'];

    }
    if ($validated['instagram'] != null) {
        $event->event_instagram = $validated['instagram'];

    }

    $starttime = strtotime($validated['starttime']);
    $event->event_start_time = date('H:i', $starttime);


    $event->event_duration = $validated['duration'];


    $event->event_day = $validated['day'];


    if ($validated['image'] != null) {
        $imageName = time().'.'.request()->file('image')->getClientOriginalExtension();
        $event->event_image = $imageName;
        request()->image->move(public_path('images'), $imageName);
    }

    $event->save();

    return redirect()->route('event.show', ['event_id' => $event->event_id]);
}

Это моя форма запроса:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CreateEvent extends FormRequest
{

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name' => 'required',
            'description' => 'required',
            'location' => 'required',
            'starttime' => 'required',
            'duration' => 'required',
            'day' => 'required',
            'website' => '',
            'twitter' => '',
            'facebook' => '',
            'instagram' => '',
            'image' => '',
        ];
    }

    public function messages() {
        return ["Invalid input"];
    }

}

Вот соответствующая часть HTML:

<div class="input-wrapper">
    <label for="location">Location *</label>
    <select id="location">
        @foreach ($event_locations as $location)
            <option value="{{$location->location_id}}">{{$location->location_name}}</option>
        @endforeach
    </select>
</div>

Когда я нажимаю «Создать», я получаю следующую ошибку:

ErrorException Undefined index: location

Это строка, в которой ошибка: $event->event_location_id = $validated['location'];

Помощь приветствуется

Ответы [ 2 ]

1 голос
/ 17 марта 2020

у вашего тега выбора отсутствует атрибут name, и значение не передается вместе с формой. поэтому индекс location отсутствует в $request. просто добавьте атрибут name в тег выбора.

<select id="location" name="location">
    @foreach ($event_locations as $location)
        <option value="{{$location->location_id}}">{{$location->location_name}} 
        </option>
    @endforeach
</select>
1 голос
/ 17 марта 2020

У вашего элемента выбора нет имени.

<select id="location">

должно быть

<select name="location" id="location">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...