Laravel博客模块前端如何将可见性状态0/1转为文字显示
Laravel博客文章状态显示问题解决
我在Laravel项目的博客模块中,给文章设置了公开(Public)和私有(Private)两种状态,数据库中用1表示公开、0表示私有,但现在视图里显示的是数字1/0,需要改成对应的文字Public/Private。以下是我当前的视图代码:
@foreach($blogs as $row) <tr> <td>{{$loop->iteration}}</td> <td><img src="{{asset('uploads/'.$row->photo)}}" alt="" class="imageSize"></td> <td>{{$row->title}}</td> <td>{!!$row->details!!}</td> <td> @if($row->visibility ==1 ? "Public" : "Private")@endif {{$row->visibility}} </td> <td> <a href="{{route('admin_blog_edit',$row->id)}}" class="btn btn_primary uppercase">Edit</a> <a href="{{route('admin_blog_delete',$row->id)}}" class="btn btn_danger uppercase" onClick="return confirm('Are you sure?')">Delete</a> </td> </tr> @endforeach
解决方法
方法1:直接在Blade中使用三元运算符
你当前的@if写法有误,直接用三元运算符替换即可,同时删除多余的数字输出:
<td>{{ $row->visibility == 1 ? 'Public' : 'Private' }}</td>
方法2:使用模型访问器(推荐)
在Blog模型中定义访问器,让字段自动返回对应的文字,视图中无需额外处理:
// app/Models/Blog.php public function getVisibilityAttribute($value) { return $value == 1 ? 'Public' : 'Private'; }
之后视图里直接写:
<td>{{ $row->visibility }}</td>
方法3:使用Blade的@if/@else语法
如果觉得三元运算符不够直观,也可以用条件判断:
<td> @if($row->visibility == 1) Public @else Private @endif </td>
内容的提问来源于stack exchange,提问作者mchomvu
相关产品推荐
相关产品推荐

