首页 > 解决方案 > 如何在 laravel 视图中传递函数?

问题描述

我有以下具有培训师功能的课程模型,我正在尝试将其传递给视图,以便我可以看到课程的培训师。

这是我的模型功能

public function trainers()
{
    return $this->belongsToMany(User::class, 'course_user');
}

这是我试图通过示范课程和功能培训师的观点。

<h6 class="card-subtitle text-muted">Trainer: {{$course->trainers()}}</h6>

这是我得到的错误:

htmlspecialchars() expects parameter 1 to be string, object given (View: /Applications/MAMP/htdocs/hs-03/re来源/视图/管理/课程/showCourse.blade.php)

这是我的控制器:

    public function show($id)
    {
      $created_bies = \App\User::get()->pluck('name', 'id')->prepend(trans('global.app_please_select'), '');
    $trainers = \App\User::get()->pluck('name', 'id');
    $tests = \App\Test::where('course_id', $id)->get();$lessons = \App\Lesson::where('course_id', $id)->get();
    // $date = Carbon::now();
    $date = Carbon::now()->addDays(30)->toFormattedDateString();
    $user = User::find(1);
    $user->name;

    $course = Course::findOrFail($id);

    return view('admin.courses.showCourse', compact('course', 'tests', 'lessons', 'date', 'user'));
}

标签: laravel-5

解决方案


这是因为trainers方法不返回字符串。像它在你的模型中定义的方法应该返回一个 Illuminate/Database/Eloquent/Relations/BelongsToMany你可以在这里看到的对象。该错误是因为您试图在模板中直接将该对象显示为字符串,这是不可能的。我想你想展示一些东西,比如培训师的数量。你可以得到喜欢

<h6 class="card-subtitle text-muted">Trainer: {{$course->trainers()->count()}}</h6>

这是可能的,因为该count方法返回一个整数而不是像trainers.

另一方面,如果您想坚持这种用法,则必须在视图中插入一个循环,该循环将遍历通过调用返回的培训师集合$course->trainers()

@foreach($course->trainers() as $trainer)
    <h6 class="card-subtitle text-muted">Trainer: {{$trainer->name }}</h6>
@endforeach

推荐阅读