2016-10-19 6 views
0

私はちょうどそれを見ていると思いますが、自分の変数を私の視点に得ることはできません。laravelの関数間で変数を渡す

私は関数を呼び出し、そこから変数(配列の配列)を含む配列を返します。私が最初に始めた関数の中から、変数をビューに送ります。

しかし、ビューでは、変数が定義されていないというエラーが表示されます。

必要な情報は配列$ itemsと配列$ transです。これらは機能確認に入る必要があり、確認画面で終了する必要があります。

二つの機能(私は質問とは何の関係もありませんほとんどのコードを削除しようとした):

public function confirmation($order_id){ 
$order = Orders::findOrFail($order_id); 
if(isset($order->transaction_id)){ 
    $data = []; 
    $data['order_id'] = $order->order_reference; 
    $data['trans'] = $order->dat['tr']; 
    $data['items'] = $order->dat['it']; 
    return view('confirmation', $data); 
}else{ 
     //Nothing relevant 
    } 
} 

public function sendpicqer($order_id){ 
$order = Orders::with(['orderDetails', 'orderAddress', 'customer'])->where('order_id', $order_id)->first(); 
$order_details = OrderDetails::where('order_id', $order_id)->get(); 

$error = $order_id; 

$result = $this->picqer->addCustomer($customer); 

if(!isset($result['data'])){ 
    $error = $result; 
    if(is_array($result)){ 
     $error = json_encode($result); 
    } 
    return redirect()->route('cancel'); 
    } 
    $orderData = [ 
     'idcustomer' => $result['data']['idcustomer'] 
    ]; 

    $orderData['products'] = []; 
    $items = []; 
    foreach($order_details as $od){ 
     $pid = $od->product_id; 
     switch ($pid) { 
      case 1: 
       $pid = 2399983; 
       break; 
      case 2: 
       $pid = 2399990; 
       break; 
     } 
     $orderData['products'][] = [ 
      'idproduct' => $pid, 
      'amount' => $od->quantity 
     ]; 
     $items[] = [ 
      'sku' => $pid, 
      'name' => $od->product_id->product_name, 
      'price' => $od->product_id->product_price, 
      'quantity' => $od->quantity 
     ]; 
    } 
    $result = $this->picqer->addOrder($orderData); 
    if(isset($result['data'])){ 
     //Succeeded! 
     $idorder = $result['data']['idorder']; 
     $orderid = $result['data']['orderid']; 

     $trans = array('id' => $orderid, 'affiliation' => 'Matt Sleeps', 'revenue' => $order->total_price); 

     $dat = []; 
     $dat['tr'] = $trans; 
     $dat['it'] = $items; 

     return $dat; 

     $result2 = $this->picqer->sendRequest('/orders/'.$idorder.'/process', null, 'POST'); 
     if(!isset($result2['data'])){ 
      $error = $result2; 
      if(is_array($result2)){ 
       $error = json_encode($result2); 
      } 
      return redirect()->route('cancel'); 
     } 
    }else{ 
     $error = $result; 
     if(is_array($result)){ 
      $error = json_encode($result); 
     } 
     return redirect()->route('cancel'); 
    } 

    //Order is successfully confirmed and send to Picqer! 
    $error = '(Both to the customer and with Picqer)'; 

} 

これは私が変数にアクセスする必要があるビューの一部である:

<?php 
var_dump($order_id); 
var_dump($trans); 
var_dump($items); 


// Function to return the JavaScript representation of a TransactionData object. 
function getTransactionJs(&$trans) { 
    return <<<HTML 
ga('ecommerce:addTransaction', { 
    'id': '{$trans['id']}', 
    'affiliation': '{$trans['affiliation']}', 
    'revenue': '{$trans['revenue']}' 
}); 
HTML; 
} 

// Function to return the JavaScript representation of an ItemData object. 
function getItemJs(&$transId, &$item) { 
     return <<<HTML 
    ga('ecommerce:addItem', { 
     'id': '$transId', 
     'name': '{$item['name']}', 
     'sku' : '{$item['sku']}', 
     'price': '{$item['price']}', 
     'quantity': '{$item['quantity']}' 
    }); 
    HTML; 
    } 

?> 

<script> 

<?php 
echo getTransactionJs($trans); 

foreach ($items as &$item) { 
    echo getItemJs($trans['id'], $item); 
} 
?> 

ga('ecommerce:send'); 
</script> 
+0

あなたは何を得るのですか...このことができます

//Return the view via confirmation function. public function sendpicqer($order_id){ ... return $this->confirmation($order_id, $items, $trans); } public function confirmation($order_id, $items, $trans){ $order = Orders::findOrFail($order_id); if(isset($order->transaction_id)){ $data = []; $data['order_id'] = $order->order_reference; $data['trans'] = $trans; $data['items'] = $items; //Send the variables to the view return view('confirmation', $data); }else{ return redirect()->route('cancel'); } } 

希望:あなたはこのような何かにコードを変更することができますか?データは表示されていますか? –

+0

@TurgutSarıçamビューで私はLaravelが生成するエラーメッセージが表示されます:未定義の変数:trans(ビュー:確認ビューへのパス) 私はvar_dumpの結果を得ることはありません。しかし、私はまず$ order_idでvar_dumpを実行し、エラーは返されません。これはエラーを引き起こす2番目のvar_dump(transを含む)です。 – Maarten

答えて

1

ビューに変数を送信する必要があります。あなたは `ビューを示すのではなく、ビューに送る配列をvar_dump`とき

+0

$ transにアクセスできますか?上のほんの数行しかなかったので、私はそれらをビューに送るデータ配列に追加しました。しかし、エラーはそれらの変数をどのように取得しようとしている必要があります。 – Maarten

+0

どのようにそれらの変数を取得しようとしていますか?ビューコードで投稿を編集できますか? – Laerte

+0

変数が使用されているビューコードを追加しました。 – Maarten

関連する問題