# 第6节 Laravel-通过模型处理性别 # 6.1 模型中创建处理性别的方法 6.2 模型方法在前台视图的遍历、调用 ## 6.1 模型中创建处理性别的方法 ## 目前在列表页的性别,显示的还是数字。所以,我们有必要显示成中文。 首先,在模型中创建一个 sex() 的方法。 `\app\models\Student.php` ~~~ <?php namespace App\models; use Illuminate\Database\Eloquent\Model; class Student extends Model { const SEX_UN = 2; const SEX_BOY = 1; const SEX_GIRL = 0; /** * 与模型相关的数据表 */ protected $table = "student"; /** * 指定是否模型应该被戳记时间 */ public $timestamps = false; /** * 处理用户的性别,转换为中文 * * @param $ind 用户存储的性别数字编号 * @return string 对应的性别中文字符 * @author webjust [604854119@qq.com] */ public function sex($ind = null) { $arr = array( self::SEX_GIRL => '女', self::SEX_BOY => '男', self::SEX_UN => '未知', ); if($ind !== null) { return array_key_exists($ind, $arr) ? $arr[$ind] : $arr[self::SEX_UN]; } return $arr; } } ~~~ 别忘了,既然要在模板中使用Student类,那就需要引入它。 在 `\resources\views\student\create.blade.php` 文件顶部加入如下代码: <?php use App\Models\Student; $student = new Student(); ?> ## 6.2 模型方法在前台视图的遍历、调用 ## 修改视图 `\resources\views\student\create.blade.php` <div class="form-group"> <label class="col-sm-2 control-label">性别</label> <div class="col-sm-5"> @foreach($student->sex() as $ind => $sex) <label class="radio-inline"> <input type="radio" name="Student[sex]" {{ (isset(old('Student')['sex']) && old('Student')['sex'] == $ind) ? 'checked' : '' }} value="{{ $ind }}"> {{ $sex }} </label> @endforeach </div> <div class="col-sm-5"> <p class="form-control-static text-danger">{{ $errors->first('Student.sex') }}</p> </div> </div> 同理,我们在列表页首页也需要使用sex方法,因此也需要引入Student类。 在 `\resources\views\student\index.blade.php` 文件中,顶部写入: <?php use App\Models\Student; $student = new Student(); ?> 然后在视图文件中调用 sex() 方法,传递性别的值作为参数。 {{ $student->sex($student->sex) }} **显示效果:** ![](https://box.kancloud.cn/1a6405873acbe7c8dd010e6540746046_1046x728.png)