Laravel 5: Как получать сообщения по определенным категориям и отображать их в вкладках

Что касается методов RegExp для синтаксического анализа (x) HTML, то ответ всем тем, кто говорил о некоторых ограничениях, заключается в следующем: вы недостаточно подготовлены, чтобы управлять силой этого мощного оружия, поскольку NOBODI здесь говорил о рекурсии.

Сотрудник RegExp-agnostic уведомил меня об этом обсуждении, которое, конечно же, не является первым в Интернете по этой старой и горячей теме.

После прочтения некоторых сообщений первый вещь, которую я сделал, искала строку «? R» в этой теме. Второй - искать «рекурсию». Нет, святая корова, не найдено. Поскольку никто не упоминал о главном механизме, на котором построен парсер, я скоро понял, что никто не понял.

Если парсер (x) HTML нуждается в рекурсии, парсер RegExp без рекурсии недостаточно для этой цели , Это простая конструкция.

Черное искусство RegExp сложно освоить, поэтому, возможно, есть еще возможности, которые мы оставили во время тестирования и тестирования нашего личного решения, чтобы захватить всю сеть в одной руке ... Ну , Я уверен в этом:)

Вот волшебный паттерн:

$pattern = "/<([\w]+)([^>]*?)(([\s]*\/>)|(>((([^<]*?|<\!\-\-.*?\-\->)|(?R))*)<\/\\1[\s]*>))/s";

Просто попробуйте. Он написан как строка PHP, поэтому модификатор «s» делает классы include новыми. Вот пример заметки в руководстве по PHP, которое я написал в январе: Ссылка

(Позаботьтесь, в этой заметке я ошибочно использовал модификатор «m», его следует стереть, несмотря на он отбрасывается движком RegExp, поскольку не использовалось no ^ или $ anchorage.

Теперь мы можем говорить о границах этого метода с более информированной точки зрения:

  1. в соответствии с конкретной реализацией движка RegExp, рекурсия может иметь ограничение в количестве проанализированных вложенных шаблонов, но это зависит от используемого языка
  2. , хотя поврежденный (x) HTML не управляет

Во всяком случае, это только шаблон RegExp, но он раскрывает возможность разработки множества мощных реализаций. Я написал этот шаблон, чтобы заставить рекурсивный парсер спуска механизма шаблона, который я построил в своей структуре, и производительность действительно велика, как во время выполнения, так и в использовании памяти (ничего общего с другими механизмами шаблонов, которые используйте тот же синтаксис).

0
задан Hang Nguyen 13 July 2018 в 10:34
поделиться

1 ответ

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

Категория Модель

public function latestPosts(){
    return $this->hasMany('App/Post')->latest()->take(6);
}

public function beforeLatestPosts(){
    return $this->hasMany('App/Post')->latest()->slice(6)->take(5);
}

Fetch в контроллере

$category_tabs = Category::with('latestPosts', 'beforeLatestPosts')->whereIn('id', [2, 3, 4])->get();

В поле зрения

Заголовок вкладки вкладки

<div class="collapse navbar-collapse justify-content-between" id="navbarToggler1">
    <ul class="nav nav-sm navbar-nav mr-md-auto mr-lg-0 mt-2 mt-lg-0 align-self-end" role="tablist">
        @foreach($category_tabs as $tab_category)
            <li class="nav-item">
                <a class="nav-link bg-color-tech active" id="nav-outdoor-tab-{{$tab_category->id}}" data-toggle="tab" href="#nav-outdoor-{{$tab_category->id}}" role="tab" aria-selected="true">
                    {{$tab_category->title}}
                </a>
            </li>
        @endforeach
    </ul>
</div>

Содержимое вкладки для печати

@foreach($category_tabs as $tab_category)
    <div class="tab-content" id="nav-tabContent">
        <div class="tab-pane fade show active" id="nav-outdoor-{{$tab_category->id}}" role="tabpanel">
            <div class="row clearfix">
                <div class="col-lg-6">
                      @foreach($tab_category->latestPosts as $latestPost)
                        <article>
                            <div class="entry-image mb-3">
                                <a href="{{route('post.show',[$latestPost->slug])}}"><img src="{{asset($latestPost->thumbnail)}}" alt="{{$latestPost->title}}"></a>
                            </div>
                            <div class="entry-title">
                                <h3><a target="_blank" href="{{route('post.show',[$latestPost->slug])}}">{{$latestPost->title}}</a></h3>
                            </div>
                            <div class="entry-content clearfix">
                                <p>{{$latestPost->description}}</p>
                            </div>
                        </article>
                      @endforeach
                </div>
                <div class="col-lg-6">
                    @foreach($tab_category->beforeLatestPosts as $beforeLatestPost)
                        <article>
                            <div class="entry-image">
                                <a href="#"><img src="{{asset($beforeLatestPost->thumbnail)}}" alt=""></a>
                            </div>
                            <div class="entry-c">
                                <div class="entry-title">
                                    <h4><a href="#">{{$beforeLatestPost->title}}</a></h4>
                                </div>
                            </div>
                        </article>
                    @endforeach
                </div>
            </div>
        </div>
    </div>
@endforeach
0
ответ дан rkj 17 August 2018 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: