2016-11-30 13 views
1

私はRoute::resource('clients', 'ClientController');というリソースコントローラを作成しましたが、Showメソッドを使用する場合を除いてすべて正常に動作しているようです。未定義の変数ですが、var_dumpはLaravelのデータを表示します

localhost:8000/clients/1にアクセスすると、clientの未定義の変数エラーが発生しました。私がコントローラから渡している$ client変数でビューがピックアップされていない理由や理由はわかりません。

ルート: Route::resource('clients', 'ClientController');

ClientController:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Client; 

class ClientController extends Controller 
{ 
    /** 
    * Create a new controller instance 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index(Request $request) 
    { 
     $clients = Client::where('user_id', $request->user()->id)->get(); 

     return view('clients.index', [ 
      'clients' => $clients, 
     ]); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function create() 
    { 
     // 
     return view('clients.create'); 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(Request $request) 
    { 
     $this->validate($request, [ 
      'organization' => 'required|max:255', 
     ]); 

     //Create the task 

     $request->user()->clients()->create([ 
      'organization' => $request->name, 
     ]); 

     return redirect('/clients'); 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function show($id) 
    { 
     // 
     $client = Client::find($id); 
     return view('clients.show', compact($client)); 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function edit($id) 
    { 
     // 
    } 

    /** 
    * Update the specified resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function update(Request $request, $id) 
    { 
     // 
    } 

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function destroy($id) 
    { 
     // 
    } 
} 

ビュー(クライアント/ show.blade.php):

@extends('admin_template') 

@section('content') 
<div class="container"> 
    <div class="row"> 
     <div class="col-md-8 col-md-offset-2"> 
      <div class="panel panel-default"> 
       <div class="panel-heading">Dashboard</div> 

       <div class="panel-body"> 
        <strong>Organization: </strong> {{ $client->organization }} 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
@endsection 

私は私のコントローラ(ショー)でdd($client)を行うことができますし、必要なデータがそこにあるのを見て、それをデータベースからフェッチしています。

答えて

1

はこれを試してみてくださいメソッドは$記号なしで変数を保持し、ビュー内の変数を$クライアント

+0

ありがとう! !それは今、魅力のように動作します。 – Derek

0

問題はここにある:

return view('clients.index', [ // the view you are referring is clients.index 
      'clients' => $clients, 
     ]); 

、ここであなたがクライアント/ show.blade.php内のデータを取得しようとしています。どのように可能ですか?

public function show($id) 
    { 
     // 
     $client = Client::find($id); 
     return view('clients.show', compact('client')); 
    } 

コンパクト:

あなたは、クライアント/ show.blade.phpで$クライアントにアクセスする場合、あなたは(リターンビューにビュー名を変更する必要があります)方法

+0

のようなクライアント/ show.blade.php 使用では、この return view('clients.index')->with('clients', $clients); を試してみてください? 'public function show($ id)'は正しいものを指していますが、私はまだエラーを受け取ります – Derek

+0

戻り値のビューの名前と値を取得しようとしているファイル名を確認してください –

0

とします。

  1. コントローラでは変数 "clients"を使用し、ビュー変数では変数 "client"にview変数に "s"がありません。
  2. クライアントが配列の場合、 "for"ループビューページを使用する必要があります。

私はそれが動作するあなた

0
Try this 
     `return view('clients.index')->with('clients', $clients);` 

役立つと思います。

0

は、私はあなたがコントローラの右の私のメインのインデックスメソッドを見ていると思います。この

@foreach($clients as $row) 
$row->your col name; 
@endforeach 
関連する問題