Laravel表单选择选项

问题描述 投票:2回答:3

我有一个带有创建,编辑和删除按钮的登录页面,编辑按钮链接到选择(下拉)菜单,我的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    
php laravel forms
3个回答
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]);

应该重定向到路由url,其中param是id,然后执行获取和显示所有逻辑。


-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>
© www.soinside.com 2019 - 2024. All rights reserved.