ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-Laravel | PHP编辑页面上的复选框状态

2019-11-18 22:33:23  阅读:307  来源: 互联网

标签:laravelcollective laravel laravel-5-2 php checkbox


我在Laravel 5中有一个用于新Case的创建页面,可以在其中将服务链接到Case.这些服务是我的createCaseForm中的复选框.这些服务存储在数据库中,因此我写了一个ManyToMany表以包含具有许多服务的许多Case.

例:
创建case1时,请选中service1和service3的框.因此,现在manyToMany表已正确填写.现在,当我进入案例的编辑页面时,我希望默认情况下选中checkbox1和checkbox3,因为它们已经在manyToMany表中链接了.

我知道您可以使用类似Input :: old(‘username’);的东西.文本字段,但我不知道如何为复选框.

我大多数时候都使用LaravelCollective,但是对于这些复选框,我却没有.因此,最好是我想要一个HTML解决方案,如果可以的话.

谢谢

解决方法:

快速答案

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

我假设您在案例和服务之间有着多对多的雄辩关系.因此,这里是一个收集方法,而不是查询生成器.如果找不到任何内容,它将返回一个空集合,该集合本身就是真实的(因此,count函数).

但是对于更简洁的方法,如果您一次只查看一个Case,我将继续获取该Case拥有的所有Service ID的简单数组,并将其传递到视图中.

 // 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]

然后在您看来,您可以运行类似

 @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

我喜欢第二种解决方案,因为它更容易说明正在发生的事情,并且对我来说更可预测.

标签:laravelcollective,laravel,laravel-5-2,php,checkbox
来源: https://codeday.me/bug/20191118/2031422.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有