首页 > 解决方案 > Laravel 视图进入另一个视图

问题描述

不久前刚开始学习 Laravel,我有一个关于视图的问题。

我有 2 个视图文件(刀片)。

一种显示数据库中的类别。

另一种是在产品中显示 as 搜索的结果。

我想在同一个视图中使用它们,第一部分是搜索器区域,下面的区域是我想列出类别的地方。

我尝试了一些方法来使其工作,但我不确定哪种方法是正确的:

  1. 我在控制器中创建了一个函数,在其中列出了类别并处理了搜索并将其发送到视图,但我不喜欢这种方法,因为我在一个函数中处理两种不同的逻辑。

  2. 我试图将视图文件生成或@include 到主视图中。我得到了一个错误,因为数据库查询没有发生这种情况。我认为 yield 和 include 仅适用于静态数据。

所以,我不知道如何正确处理这个问题。

有人可以建议我解决这个问题吗?

提前感谢帮助!

标签: laravelviewlaravel-blade

解决方案


可以有几种方式。您可以尝试在刀片文件中获取类别数据。因此,例如,在 category.blade 中,您可以从数据库中获取类别列表。然后它将独立于其他视图文件和控制器。例如,您可以包含 category.blade.php。

第二种方式,是通过ajax获取类别数据。在这种情况下,您不能在所有使用类别的页面中插入脚本。因此,在这种情况下,您可以使用模板结构。例如。在template.blade.php

<!DOCTYPE html>
<html class="no-js css-menubar" lang="en">
    @stack('style')
    @include('admin.layouts.head')
    @include('admin.layouts.header')
    @include('admin.layouts.page')
    @include('admin.layouts.footer')
    @stack('script')
</html>

page.blade.php

<div class="page">
    @yield('page-content')
</div>

在单个页面中,

@extends('admin.layouts.template' ,['menu'=>'coach'])
@section('insert-css')
  your custom css content here
@endsection
@section('page-content')
  Your page content here
@endsection

推荐阅读