2017-11-03 25 views
1

、ブレードへの機能のデータを置きます。私は私のlaravelブレードのhtmlコード内のデータを構築するためにこれを再作成しようとしています。ここに私のブレードに上記FormBuilder::BuildOrderForm($dealer, $aa, $form)を置くための適切な方法何:は、私は私のlaravelコントローラ内の関数のコードを次しているlaravel

@section('content') 

<h3 style="font-size: 26px; padding: 10px 0;"> {{ <!-- This is where I need the data --> }} </h3> 
<p class="uk-text-muted" style="font-size: 20px;" ></p> 

<div class="uk-grid"> 
    <div class="uk-width-2-10"> 
     <ul style="margin: 0; padding: 0; list-style-type: none; float: left; width: 100%;"> 

     </ul> 
    </div> 
@endsection 

コントローラでクラス全体:

class OrderController extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->middleware('auth'); 
     $ordering_access = AttributesList::with('attr_info') 
      ->where('attr_id', AttributesList::attrId('ordering_toggle')) 
      ->where('data', $this->dealer) 
      ->count(); 

     if ($ordering_access > 0) { 
      \Session::flash('error_message', "You are not allowed to order. Please contact your CSR!"); 
      $attributeid = 100000; 
     } else { 
      $attributeid = 6; 
     } 
     Access::Check($attributeid); 
     $this->dealer = Access::getAttrValue('dealer_num'); 
    } 

    public function index() 
    { 
     $forms = FormBuilder::Orderforms($this->dealer); 
     return view('Shop.Order.index')->with('forms', $forms); 
    } 


    public function show($id) 
    { 
     $cart_num = Access::getAttrValue('cart_num'); 
     if (!$cart_num) { 
      $cart = 0; 
     } else { 
      $find_cart = Cart::find($cart_num); 
      if ($find_cart && $find_cart->orderform == $id) { 
       $cart = $cart_num; 
      } else { 
       $cart = 0; 
      } 
     } 
     return view('Shop.Order.show') 
      ->with('dealer', $this->dealer) 
      ->with('cart', $cart) 
      ->with('form', $id); 
    } 

    public function store(Request $request) { 
     $this->validate($request, [ 
      'dealer' => 'required|numeric', 
      'form' => 'required', 
     ]); 

     // check to make sure this dealer can order from this formid 
     $dealer = Input::get('dealer'); 
     $form = Input::get('form'); 

     $aa = FormBuilder::getcompanyfromform($form) + 0; 

     $comp = CustomerDataNew::getcomp($dealer); 

     if (!in_array($aa, $comp)) { 
      return "Error: Dealer can't use this form"; 
     } 

     try { 
      return json_encode(FormBuilder::BuildOrderForm($dealer, $aa, $form)); 
     } catch (OPSException $e) { 
      return json_encode(['error' => $e->getUserMessage()]); 
     } catch (Exception $e) { 
      return json_encode(['error' => $e->getMessage()]); 
     } 
    } 
} 
+0

?コントローラー?クラス? – idelara

+0

申し訳ありませんが、私のコントローラのクラスです。私はクラス全体を更新しました。しかし、はい、これはそのビューのコントローラーです –

+0

Ok ...別の問題...どのルートにアクセスしていますか、コントローラーのどのメソッドがそのようなルートにバインドされていますか? – idelara

答えて

2

あなたはちょうどあなたが見てしなければならないので、エンコードされたデータを返すされていますJSONの束(または例外をキャッチしている場合はエラー)。

データを表示するには、show()メソッドで実行しているのと同じことを実行する必要があります。つまり、ビューを返して、その特定のビューまたは部分的にデータをレンダリングする必要があります。

次のことを試してみてください。

public function store(Request $request) { 

... 

    try { 

     $data = json_encode(FormBuilder::BuildOrderForm($dealer, $aa, $form)); 
     return view('Shop.Order.show')->with('data', $data); 

    } catch (OPSException $e) { 
     return $this->returnFromException($e->getUserMessage()); 
    } catch (Exception $e) { 
     return $this->returnFromException($e->getMessage()); 
    } 
} 

public function returnFromException($error) 
{ 
    $error = json_encode(['error' => $error]); 
    return view('Shop.Order.show')->with('error', $error); 
} 

今、あなたのビューでは、ブレードを使用して、あなたがそうのようなデータを表示することができます:あなたはdd() Sを取り除く必要があります

@section('content') 

    @if(isset($error))  
     <h3 style="font-size: 26px; padding: 10px 0;">{{ dd($error) }} </h3> 
    @else if(isset($data)) 
     {{ dd($data) }} 
    @endif 
    <p class="uk-text-muted" style="font-size: 20px;" ></p> 

    <div class="uk-grid"> 
     <div class="uk-width-2-10"> 
      <ul style="margin: 0; padding: 0; list-style-type: none; float: left; width: 100%;"> 

      </ul> 
     </div> 
    </div> 

@endsection 

注意をBladeビューでは、HTMLレンダリングを停止しているためです。配列またはJSONをレンダリングするには、@foreach()のようなものを使用する必要があります。

こちらがお役に立てば幸いです。

乾杯!

-1
<?php 

use App\Http\Controllers\ControllerName; 
echo ControllerName::functionName(); 

?> 

functionNameをが

コントローラの関数 '静的' キーワードの例を持っている必要があります。

:私は例えば、このリンクHow to call a controller function inside a view in laravel 5

からのコードを見て

public static function functionName() { 
return "Hello World!"; 
} 

経路:

Route::get('checkTheTest', ['as' => 'checkrequest', 'uses' => '[email protected]']); 

MiscController:

public static function requesting($request){ 
     return 'error ' .$request; 
    } 

ブレードテンプレートビュー:

<?php 
use App\Http\Controllers\MiscController; 
echo MiscController::requesting('hello world'); ?> 

OUTPUT:あなたのコードであなたのtryブロックが配置されている

error hello world 
+0

どういう意味ですか、説明してください。 – webDev

+1

私は上記の例を追加しました –

関連する問題