首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel |编辑页面上的复选框状态

Laravel |编辑页面上的复选框状态
EN

Stack Overflow用户
提问于 2016-03-31 23:49:38
回答 2查看 9.6K关注 0票数 4

我在Laravel 5中有一个新案例的创建页面,在那里我可以将服务链接到案例。这些服务是我的createCaseForm中的复选框。服务存储在数据库中,所以我写到一个ManyToMany表中,以便有许多具有许多服务的案例。

示例:当我创建case1时,我选中了service1和service3的复选框。因此,现在manyToMany表已正确填充。现在,当我转到案例的编辑页面时,我希望默认选中checkbox1和checkbox3,因为它们已经链接到manyToMany表中。

我知道你可以对文本字段使用像Input::old('username');这样的东西,但是我不知道如何在复选框中这样做。

我确实大部分时间都在使用LaravelCollective ,但对于这些复选框,我不使用。当然,如果可能的话,我更希望使用解决方案。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-01 03:00:12

快速回答

代码语言:javascript
复制
 @foreach($services as $service)
      <input type="checkbox" name="services[]" value="{{ $service->id }}"
           @if (count($case->services->where('id', $service->id)))
               checked
           @endif>
 @endforeach

我假设您在Cases和Services之间具有多对多的雄辩关系。因此where是一个集合方法,而不是一个查询构建器。如果什么都没有找到,它将返回一个空集合,这本身就是真的(因此使用count函数)。

但是,为了更简洁,如果您一次只查看一个案例,我将继续获取案例拥有的所有服务it的简单数组,并将其传递到视图中。

代码语言:javascript
复制
 // The eloquent way
 $case_services = $case->services->toArray();

 // Otherwise, just query for all service IDs
 $case_services = DB::table('case_services')->where('etc...')

 // You'll end up with something like [24, 47, 103, 287]

然后在您的视图中,您可以只运行如下内容

代码语言:javascript
复制
 @foreach($services as $s)
      <input type="checkbox" name="{{ $s->name }}" value="{{ $s->service_id }}"
           @if( in_array($s->service_id, $case_services) ) checked="1" @endif />
 @endforeach

我只是喜欢第二个解决方案,因为它更容易告诉我发生了什么,并且对我来说更容易预测。

票数 2
EN

Stack Overflow用户

发布于 2016-04-01 02:38:34

这是示例代码,您可以执行此操作,如果您使用的是刀片模板,则执行此操作,第3个参数为true/false以选中/取消选中复选框

代码语言:javascript
复制
{!! Form::checkbox('agree', 1, ($model->checkbox ==1?true:null), ['class' => 'field']) !!}

在这里,您正在将您的模型DB存储值传递给复选框(在第三个参数中)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36338088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档