2016-10-08 17 views
1

私は、ベンダに関する情報を示すindex.blade.phpという名前のビューを持っています。 VendorController、このビューで私はボタン "View address"を持っていますが、今はボタンクリックでこのベンダーのデータを表示したいと思います。私はまた、ベンダーのアドレスをdbから取り出すVendorAddressControllerというコントローラも持っています。 index.blade.phpファイルのコード:VendorAddressContollerlaravelのあるコントローラから別のコントローラに変数を渡す方法

public function index($id) 
{   
    $vendor = Vendors::find($id); 
    $vendorsaddress = VendorAddress::where('vendor_id', $vendor->id)->paginate(15); 
    return view('admin.vendoraddress.index',['vendorsaddress'=>$vendorsaddress, 'vendor'=>$vendor, 'address'=>$address]); 
} 

<td> 
    <a href="{!! $vendor->slug !!}/vendor-address/" class="btn btn-primary">View Address</a> 
</td> 

しかし、私は、ボタンをクリックして何もそれを行うために複数の方法があり

答えて

2

が来ています。あなたの要件に応じて多くの選択肢の1つを選択できます。あなたは二

Session::get('key'); 

2.By Cookies に続いて、第1のコントローラ

Session::put('key', 'value'); 

にあなたの最初のコントローラをこれを行うことができます

1.By Session

$response = Response::make('Hello World'); 

return $response->withCookie(Cookie::make('name', 'value', $minutes)); 

そして、あなたはより多くのhereから見つけることができ、次のリクエスト

$value = Cookie::get('name'); 

にそれを得ます。あなたが心に留めておく必要があります

+0

に応じていくつかのフィールドを変更してください@ファルガン・ロダヤ:私の答えがあなたの解決策なら、私の答えを受け入れてください –

0

2つのこと:

  1. あなたが別のコントローラからデータを呼び出すことはありません。
  2. エンティティごとに異なるものを作成する必要はありません。コントローラを小さなクラス、モデル、リポジトリ(DB対話用)にするためにジョブを分割したい場合や、ヘルパーになる可能性がある場合は、ベンダーに関するすべてのプロセスを1つのVendorControllerに移す必要があります。

このように、このベンダーのデータをボタンクリック(動的)で表示したいとします。その後、あなたは、jqueryのの使用をしなければならない、私は同じのための小さなコードスニペットを追加してい:またはweb.php(Laravel 5.2およびそれ以前用)(Laravel 5.3用)route.phpで新しいルートを作る

Route::get('vendor-address/{id}', '[email protected]'); 

jsファイルを作成してcustom.jsという名前を付けて、publicまたはresourcesフォルダに配置して、しばらく公開することができます。同じ内容:

あなたが持っている必要があり、あなたのビューで、今
$('#show-address').click(function() 
{ 
    //get the id of the vendor we want to fetch address of 
    var vendor_id = $(this).data('id'); 
    //send a get request to our controller to get the data 
    $.get('/vendor-address/'+vendor_id, function(data) 
    { 
     //store the json data we got from the controller into a variable 
     var parsed = JSON.parse(data); 
     //remove all the content of this vendors address div so that the address doesn't repeats 
     $('.vendor_address_'+vendor_id).empty(); 
     //append the address in this div 
     $('.vendor_address_'+vendor_id).append(parsed); 
    }); 
}) 

<button class="btn btn-success" data-id="{{$vendor->id}}">Show address</button> 

//and a empty div, our address will be appended here 
<div class="vendor_address_{{$vendor->id}}"></div> 

今お使いのコントローラで:

public function getAddress($id) 
{ 
    $address = Vendor::where('id', $id)->first(); 
    return json_encode($address->address); 
} 

あなたの条件

関連する問題