Добавление фрагментов HTML в блейд-вид - PullRequest
2 голосов
/ 11 июля 2019

Я создаю проект laravel с помощью моего собственного js player.Это уже сделано и работает, поэтому мне нужно отобразить на странице div с песнями, и я не знаю, как лучше всего это делать.

Что я попробовал: у меня есть модель Song, в которой я добавил методы для отображения песен.

{
  static public function displaySongs()
  {
    $songs = Song::all();
    echo "<div class='ostContainer'>";
    foreach ($songs as $song) {
      $song->displayOne();
    }
    echo "<div>";
    return $songs;
  }

  public function displayOne()
  {
    $songname = substr($this->name, 0, -4);
    echo "<div class='songContainer noselect' 
            data-audio='$this->path$this->name' 
            data-songid='$this->id'
            data-songname='$songname'>$songname</div>";
  }
}

И представление лезвия:

@extends('layout.layout')
@section('content')
    <audio id="audio"></audio>
    @include('player._playercontainer')
    <?php App\Song::displaySongs() ?>
@endsection

Это работаетотлично, как задумано, но я чувствую, что этот код не так.Есть ли лучший способ сделать это?

Версия Laravel: 5.8. *.

1 Ответ

1 голос
/ 11 июля 2019

Вы можете сделать большую часть этого по вашему мнению. Сделайте что-то вроде:

public function displaySongs()
{
    return view('songs')->with([
        'songs' => Song::all()
    ]);
}

Тогда по вашему мнению:

@extends('layout.layout')
@section('content')
    <audio id="audio"></audio>
    @include('player._playercontainer')
    <div class='ostContainer'>
        @foreach ($songs as $song)
            @php
                $songname = substr($song->name, 0, -4);
            @endphp
            <div class='songContainer noselect' 
                data-audio='{{$song->path}}{{$song->name}}' 
                data-songid='{{$song->id}}'
                data-songname='{{$songname}}'>
                {{$songname}}
            </div>
        @endforeach
    </div>
@endsection

Как правило, вы хотите, чтобы ваша логика в вашей модели, тощие контроллеры и весь HTML были в вашем представлении. В этом случае, однако, логика достаточно проста, так что вы можете просто установить одну переменную в своем представлении на лету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...