2016-09-02 3 views
1

Laravel 5의 한 컨트롤러에서 하나 이상의보기로 배열을 전달하는 방법에 대한 질문이 있습니다. 가능합니까? 하나의 함수 index()에서 index.blade.php에 배열을 전달하고 home.blade.php에 배열을 전달하고 싶습니다. 인덱스 페이지에는 모든 데이터가 표시되지만 홈페이지에는 몇 가지 정보 만 표시됩니다. 여기서 아래의 코드는하나의 컨트롤러에서 둘 이상의보기로 배열을 전달 하시겠습니까? Laravel 5

컨트롤러 :

<?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')); 
    } 
} 

home.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">&laquo;</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">&raquo;</span> 
         </a> 
        </li> 
       </ul> 
      </nav> 
     </div> 
    </div> 
</div><!-- end container --> 
@stop 

I의 또 다른 제어함으로써 시도

@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' => ['[email protected]', $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 

index.blade.php 홈 페이지,하지만 여전히 작동하지 않는, 그것은 항상 "$ edisi_list 정의되지 않은 변수"오류를 보여줍니다. 거기에 또 다른 방법이 있다면 저에게 보여주세요, 고마워요!

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() { 
     // 
    } 

} 

답변

2

당신이 할 view composer을 사용할 수 있습니다 :이 그래서 새로운 서비스 제공을해야 사용하여

View::composer(['index', 'home'], function ($view) { 
    $edisi_list = Edisi::all(); 
    $view->with('edisi_list', $edisi_list); 
}); 
+0

를? 실례합니다.하지만이 코드를 어디에 넣어야합니까? @alexey –

+0

예, 서비스 공급자를 생성해야합니다. 위의 링크를 따라 예제 코드를 찾을 수 있습니다. 클로저를 사용하지 않으려면 뷰 작성자 클래스도 만들어야합니다. –

+1

좋아요, 고마워요 –

관련 문제