【问题标题】:How to pass values to different views at same time in laravel?如何在laravel中同时将值传递给不同的视图?
【发布时间】:2017-04-21 08:45:57
【问题描述】:

我的网站有一个主页和管理区域。我主页的一个部分有一个滑块,其图像可以通过管理面板进行管理,即我专门为滑块创建了一个 CRUD。

但问题是管理面板有他自己的视图,他可以在其中查看以表格方式存储的所有图像。

我还想将值传递给我的主页,这样滑块上的图像也会发生变化,但我无法将值传递给 2 个视图。

SliderController 有一个名为 Index 的函数

public function index()
    {
        $slider = Slider::all();
        return view('slider.index')->withSlider($slider);
    }

slider.index

@extends('main')

@section('title','OnlineKart | Slider')

@section('content')

    <div class="container container-margin">
        <div class="row">
            <div class="col-md-12">
                <div class="panel panel-primary">
                  <div class="panel-heading">
                        <h2>Slider Image Details</h2>

                        <a class="btn btn-warning " href="{{route('slider.create')}}">  Create New</a>

                  </div>
                  <div class="panel-body">
                  <table class="table">
                        <thead>
                            <th>Title</th>
                            <th>Body</th>
                            <th>Image</th>
                            <th>Created At</th>
                            <th></th>
                            <th></th>
                        </thead>
                        <tbody>
                            @foreach ($slider as $sliders)
                                <tr>
                                    <td>{{ $sliders->name }}</td>
                                    <td>{{ $sliders->description }}</td>
                                    <td><img src="{{asset("images/$sliders->image")}}"  class="img-responsive"></td>
                                    <td>{{ $sliders->created_at->diffForHumans() }}</td>
                                    <td><a href="{{route('slider.edit',$sliders->id)}}" class="btn btn-success btn-sm"><span class="glyphicon glyphicon-pencil"></span></a></td>
                                    <td>{{  Form::open(['route'=>['slider.destroy',$sliders->id], 'method' => 'DELETE']) }}
                                        {{Form::button('<span class="glyphicon glyphicon-trash"></span>', array('type' => 'submit', 'class' => 'btn btn-danger btn-sm'))}}
                                        {{ Form::close() }}</a></td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                    </div>
                </div>
            </div>          
        </div>
    </div>

@endsection

主页

<!--Slideshow-->
        <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
      <!-- Indicators -->
      <ol class="carousel-indicators">
        <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
        <li data-target="#carousel-example-generic" data-slide-to="1"></li>
        <li data-target="#carousel-example-generic" data-slide-to="2"></li>
        <li data-target="#carousel-example-generic" data-slide-to="3"></li>
      </ol>

      <!-- Wrapper for slides -->
      <div class="carousel-inner" role="listbox">
        <div class="item active">
          <img src="{{'images/thumbcrousel.jpg'}}" alt="img1">
          <div class="carousel-caption">
            <h3>Title Here 1</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam, ex.</p>
          </div>
        </div>
        <div class="item">
          <img src="{{'images/thumbcrousel.jpg'}}" alt="img2">
          <div class="carousel-caption">
            <h3>Title Here 2</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam, ex.</p>
          </div>
        </div>
        <div class="item">
          <img src="{{'images/thumbcrousel.jpg'}}" alt="img3">
          <div class="carousel-caption">
            <h3>Title Here 3</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam, ex.</p>
          </div>
        </div>
        <div class="item">
          <img src="{{'images/thumbcrousel.jpg'}}" alt="img3">
          <div class="carousel-caption">
            <h3>Title Here 4</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam, ex.</p>
          </div>
        </div>
      </div>

我也想将价值传递给这个主页,这样我就可以让它动态化

我可以在此管理部分(即 slider.index 中)查看我的所有数据。

有什么方法可以将值传递给主页,以便我可以同时在两个页面中查看我的图像。

localhost:8000 和 localhost:8000/slider/index 都应该显示图像。一页供公众使用,一页仅供管理员使用。

对不起,长篇文章。如果很难理解,请告诉我,我会尽力澄清。谢谢!

【问题讨论】:

  • 您需要将Slider::all() 传递给您的“公共”索引。然后在您的索引中,您将像在管理页面上一样遍历它们,而是创建 HTML 轮播元素
  • 您想在admin 页面上实时显示更改home?如果是,你真的需要了解 HTTP 请求和 Laravel 框架的生命周期。由于您的主页已经加载,您必须有一些外部信息告诉您的页面:嘿,您需要重新加载这些图像。
  • 阅读 laravel view composers

标签: laravel


【解决方案1】:

我不知道困难是什么?你有两个视图,大概有两个控制器。因此,只需在两种情况下将数据传递给视图即可:

class HomeController extends Controller
{
    public function index()
    {
        $slider = Slider::all();

        return view('slider.index', compact('slider');
    }
}

还有……

class SliderController extends Controller
{
    public function index()
    {
        $slider = Slider::all();

        return view('admin.slider.index', compact('slider');
    }
}

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多