Laravel表单选择选项

时间:2019-03-14 15:56:15

标签: php laravel forms

我有一个带有“创建”,“编辑”和“删除”按钮的登录页面,“编辑”按钮链接到一个选择(下拉)菜单,我的URL路径是/ events / {number} / edit。

我将如何获取我的URL以这种格式写入内容,因为页面已经被加载,然后进行了选择。

<div class="col-sm-4">
    <form method="get" action="{{ route('events.edit', ['event_id' => '2']) }}">
        <label>Event Name</label>
        <select name="event_edit" class="form-control form-control-lg">
            @foreach($events as $event)
                <option>{{$event->event_name}}</option>
            @endforeach  
        </select>  
        <button type="submit" class="btn btn-primary btn-round">Edit</button>
    </form>
</div>

以上方法有效,但我必须手动将event_id设置为2,是否需要使用javascript?

Route::resource('events', 'EventController');

GET|HEAD  | events/{event}/edit    | events.edit      | App\Http\Controllers\EventController@edit                              | web    

3 个答案:

答案 0 :(得分:0)

我没有可以测试的larvel实例,只是简单地将PHP设为静态,因此一旦渲染了DOM,您就无法使用PHP更新输出,即在下拉列表(或任何其他内容)中将$event->id放在操作中元素)已更改。如果需要,您将需要JavaScript。但是,我会选择一种更直接的方法。

您将需要在控制器上创建通用的编辑路径,并将id放在选项上作为值。

<div class="col-sm-4">
    <form method="get" action="{{ route('events.edit') }}">
        <label>Event Name</label>
        <select name="event_edit" class="form-control form-control-lg">
            @foreach($events as $event)
                <option value="{{$event->id}}">{{$event->name}}</option>
            @endforeach  
        </select>  
    </form>
</div>

现在,提交表单后,您将拥有用户想要编辑的事件的ID。只需使用它即可在控制器中获取事件并呈现该事件的编辑屏幕。如果您希望该网址很好地显示为site.com/edit/event/3,则可以使用类似

return redirect()->route('route.name', [$param]);

应该重定向到以参数为id的路由url,然后执行获取和显示在那里的所有逻辑。

答案 1 :(得分:-1)

每个谈论您的人都使用{!! Form::select() !!},但是,如果您需要的只是使用简单的简单HTML ..这是另一种方式。

<select name="myselect">
@foreach ($options as $key => $value)
    <option value="{{ $key }}"
    @if ($key == old('myselect', $model->option))
        selected="selected"
    @endif
    >{{ $value }}</option>
@endforeach
</select>

old()函数在您提交表单且验证失败时很有用。因此,old()返回先前选择的值。

答案 2 :(得分:-1)

hm。我们在这里需要形式动作吗?怎么样:

<div class="col-sm-4">
    <form method="get" action="">
        <label>Event Name</label>
        <select name="event_edit" class="form-control form-control-lg" 
            onChange="window.location.href='/events/' + this.options[this.selectedIndex].value + '/edit'">
            @foreach($events as $event)
                <option value="{{$event->id}}">{{$event->name}}</option>
            @endforeach  
        </select>  
    </form>
</div>