【问题标题】:Laravel form collective checkboxLaravel 表单集体复选框
【发布时间】:2017-04-05 13:04:40
【问题描述】:

那么如何使用数据库中的值创建默认选中/未选中复选框?我正在使用 laravel 集体的 Form 模型,我的复选框字段是这样的:

Form::model($role, ['route' => ['the_route', $role->slug], 'method' => 'patch'])

    @foreach ($permissions as $permission)
        Form::checkbox('permission['.$permission->slug.']', 'true', null, ['class' => 'square'])
    @endforeach

Form::close()

问题是$role->permissions 返回一个这样的数组:

array:3 [
  "dashboard.view" => "false"
  "user.view" => "true"
  "user.edit" => "false"
]

【问题讨论】:

    标签: php laravel checkbox blade laravel-5.3


    【解决方案1】:

    第三个参数是一个布尔值$checked,所以你可以这样写:

    Form::model($role, ['route' => ['the_route', $role->slug], 'method' => 'patch'])
    
        @foreach ($permissions as $slug => $value)
            Form::checkbox('permission['.$slug.']', 'true', (bool) $value, ['class' => 'square'])
        @endforeach
    
    Form::close()
    

    【讨论】:

      【解决方案2】:

      Lavel Collective 有一个没有记录的有趣资源,至少我从未在任何网站上找到它。使用与您为两个模型之间的关系指定的名称相同的名称命名您的复选框,例如“权限”,然后 Laravel Collective 将检查该关系中的所有输入。在您的特定情况下, $role->permission 应该返回一个模型,而不是数组,就像在任何 Laravel 应用程序中一样。

      查看示例代码:

      {!! Form::model($role, ['route' => ['roles.update',  $user->id], 'method' => 'put']) !!}
      
          <div class="row form-group">
      
              @foreach($permissions as $permission)
                  <div class="col-sm-3">
                      {!! Form::checkbox('permissions[]', $permission->id) !!}
                      {!! Form::label('permissions', $permission->name) !!}
                  </div>
              @endforeach
      
          </div>
      
      {!! Form::close() !!}
      

      // 榜样

      class Role extends Model 
      {
      
          public function permissions()
          {
              return $this->belongsToMany(Permission::class, 'permission_role');
          }
      }
      

      // 权限模型

      class Permission extends Model
      {
      
          public function roles()
          {
              return $this->belongsToMany(Role::class, 'permission_role');
          }
      }
      

      【讨论】:

      • 谢谢!这为我节省了很多时间。
      猜你喜欢
      • 2017-03-15
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 2011-05-12
      • 2015-10-29
      相关资源
      最近更新 更多