Laravel 从一个控制器向多个视图传递数组?拉维尔5号
我有一个问题,关于如何将一个数组从Laravel 5中的一个控制器传递到多个视图,这可能吗?我想从一个函数index()向index.blade.php和home.blade.php传递一个数组。索引页将显示所有数据,而主页将仅显示少数数据。下面是代码 控制器:Laravel 从一个控制器向多个视图传递数组?拉维尔5号,laravel,laravel-5,Laravel,Laravel 5,我有一个问题,关于如何将一个数组从Laravel 5中的一个控制器传递到多个视图,这可能吗?我想从一个函数index()向index.blade.php和home.blade.php传递一个数组。索引页将显示所有数据,而主页将仅显示少数数据。下面是代码 控制器: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Requests\
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Requests\EdisiRequest;
use App\Edisi;
use Session;
use Storage;
class EdisiController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$edisi_list = Edisi::all();
return view('edisi/index', compact('edisi_list'));
}
}
@否则
Tidak ada数据edisi
@恩迪夫
-
-
@停止
index.blade.php
@extends('template')
@section('main')
<div class="container sitecontainer bgw">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 m22 single-post">
@if (count($edisi_list) > 0)
<div class="reviewlist review-posts">
<?php foreach ($edisi_list as $edisi): ?>
<div class="post-review col-md-4 col-sm-12">
<div class="post-media entry">
<a href="#" title="">
<img src="{{ asset('fotoupload/' . $edisi->cover) }}" alt="fotoupload/coveredisi.png" class="img-responsive" style="height: 480px; width: 1200px;">
</a>
</div><!-- end media -->
<div class="post-title">
<h4 style="text-align: center;"><a href="#">{{ $edisi->judul }}</a></h4>
</div><!-- end post-title -->
</div><!-- end post-review -->
<?php endforeach ?>
</div><!-- end review-posts -->
@else
<p>Tidak ada data edisi.</p>
@endif
</div><!-- end col -->
</div><!-- end row -->
<div class="row">
<div class="pagination-wrapper text-center">
<nav>
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div><!-- end container -->
@stop
@extends('template')
@section('main')
<div class="container sitecontainer bgw">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 m22 single-post">
<div id="siswa">
<h2>Daftar Edisi</h2>
@if (count($edisi_list) > 0)
<table class="table">
<thead>
<tr>
<th>Judul</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php foreach ($edisi_list as $edisi): ?>
<tr>
<td>{{ $edisi->judul }}</td>
<td>
<div class="box-button">
{{ link_to('edisi/' . $edisi->id, 'Detail', ['class' => 'btn btn-success btn-sm']) }}
</div>
<div class="box-button">
{{ link_to('edisi/' . $edisi->id . '/edit', 'Edit', ['class' => 'btn btn-warning btn-sm']) }}
</div>
<div class="box-button">
{!! Form::open(['method' => 'DELETE', 'action' => ['EdisiController@destroy', $edisi->id]]) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-sm']) !!}
{!! Form::close() !!}
</div>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
@else
<p>Tidak ada data edisi.</p>
@endif
<div class="tombol-nav">
<a href="edisi/create" class="btn btn-primary">Tambah Edisi</a>
</div>
</div> <!-- / #jurnal -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
@stop
@extends('template'))
@节(“主节”)
水仙花
@如果(计数($edisi_列表)>0)
朱杜尔
行动
{{$edisi->judul}
{{link_to('edisi/'.$edisi->id,'Detail',['class'=>'btn btn success btn sm'])}}
{{link_to('edisi/'.$edisi->id./edit','edit',['class'=>'btn btn warning btn sm'])}}
{!!Form::open(['method'=>'DELETE','action'=>['EdisiController@destroy“,$edisi->id]])
{!!表单::提交('Delete',['class'=>'btn-btn-danger-btn-sm'])
{!!Form::close()!!}
@否则
Tidak ada数据edisi
@恩迪夫
@停止
我尝试为主页制作另一个控制器,但仍然不起作用,它总是显示错误“$edisi_list undefined variable”。如果有其他方法,请告诉我,谢谢
EdisiServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Edisi;
class EdisiServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot() {
View::composer(['edisi/index', 'pages/home'], function ($view) {
$edisi_list = Edisi::all();
$view->with('edisi_list', $edisi_list);
});
}
/**
* Register the application services.
*
* @return void
*/
public function register() {
//
}
}
您可以使用来执行此操作:
View::composer(['index', 'home'], function ($view) {
$edisi_list = Edisi::all();
$view->with('edisi_list', $edisi_list);
});
对于使用view composer传递数组的任何其他人来说,使用compact
传递数组都不起作用。
您必须直接发送:
在自定义编写器中(在我的例子中是app/Http/View/Composers/UserInfoComposer.php
)
创建视图生成器的参考资料:使用此工具,我需要创建一个新的服务提供商吗?对不起,请问这个密码放在哪里@alexeyYes,您应该创建一个服务提供商,您可以通过上面的链接找到示例代码。如果不想使用闭包,还需要创建view composer class.mm嘿,我可以再问一次吗?我确实使用您上面给出的代码创建了服务提供程序,但它向我显示了一个新错误“EdisServiceProvider.php第16行中的FatalErrorException:未找到类'App\Providers\View'。我确实将服务提供商注册到config/app.php@alexeyI,我已经更新了显示服务提供商代码的问题,添加了“使用视图”,现在它可以工作了!非常感谢你!
public function compose( View $view ) {
$allUserInfo = array();
$generalFunctions = new GeneralFunctions();
$currentUserID = $generalFunctions->getCurrentUserID();
$currentUserName = $generalFunctions->getCurrentUserName();
$currentUserEmail = $generalFunctions->getCurrentUserEmail();
$currentUserProfilePic = $generalFunctions->getCurrentProfilePic();
$allUserInfo['currentUserID'] = $currentUserID;
$allUserInfo['currentUserName'] = $currentUserName;
$allUserInfo['currentUserEmail'] = $currentUserEmail;
$allUserInfo['currentUserProfilePic'] = $currentUserProfilePic;
$view->with( 'allUserInfo', $allUserInfo );
//NOT: $view->with( 'allUserInfo', compact('allUserInfo'));
}