首页 > 解决方案 > Laravel - 如何根据 is_approved 显示提交编辑和删除

问题描述

我的 Laravel-5.8 中有这段代码

public function index()
{
    $userCompany = Auth::user()->company_id;
    $userEmployee = Auth::user()->employee_id;
    $identities = DB::table('appraisal_identity')->select('id')->where('company_id', $userCompany)->where('is_current', 1)->first();
    $goals = AppraisalGoal::where('employee_id', $userEmployee)->where('appraisal_identity_id', $identities->id)->get();

    return view('appraisal.appraisal_goals.index')->with('goals', $goals);
}

看法

   <td>
      @if ($goal->is_approved == 3)
            <span class="badge bg-success" >Approved</span>
      @elseif ($goal->is_approved == 2)
              <span class="badge bg-danger">Not Approved</span>
      @elseif ($goal->is_approved == 1)
           <span class="badge bg-info">Awaiting Approval</span>                                  
      @else
           <span class="badge bg-black">Draft</span>                                    
       @endif
  </td>
      <td>                               
          @can('appraisal_goal_show')
             <a class="btn btn-xs btn-primary" href="{{ route('appraisal.appraisal_goals.show', $goal->id) }}">
                  {{ trans('global.view') }}
             </a> 
          @endcan
          @can('appraisal_goal_edit')
              <a class="btn btn-xs btn-info" href="{{ route('appraisal.appraisal_goals.edit', ['id'=>$goal->id]) }}">
                   {{ trans('global.edit') }}
              </a>
           @endcan
           @can('appraisal_goal_delete')
               <button class="btn btn-xs btn-danger" type="submit" onclick="deleteTag({{ $goal->id }})">
                      Delete
               </button>
            <form id="delete-form-{{ $goal->id }}" action="{{ route('appraisal.appraisal_goals.destroy',$goal->id) }}" method="POST" style="display: none;">
                   @csrf
                    @method('DELETE')
              </form>
             @endcan   
       </td>

        <div class="col-12">
                &nbsp;&nbsp;&nbsp;<a href ="{{ route('post.publish.all')}}" class="btn btn-primary float-left"><i class="fas fa-arrow-right"></i> Submit</a>                         
        </div>  

我想应用这个条件。

  1. 仅当 is_approved = 1 或 2 或 3 时编辑才可见
  2. 仅当 is_approved = 0 或 2 时删除才可见
  3. 提交按钮仅在 is_approved = 1 或 2 时可见

我如何实现这些?

谢谢

标签: laravel

解决方案


您可以将每个按钮嵌套在一个@if并使用函数检查is_approvedin_array

@if(in_array($goal->is_approved, [1, 2, 3]))
    @can('appraisal_goal_edit')
        <a class="btn btn-xs btn-info" href="{{ route('appraisal.appraisal_goals.edit', ['id'=>$goal->id]) }}">
            {{ trans('global.edit') }}
        </a>
    @endcan
@endif

您可以对删除和提交按钮执行相同的操作,只需更改in_array.


推荐阅读