2017-11-03 3 views
1

Ich habe in einer Funktion in meinem Laravel Controller folgenden Code:Putting Daten eine Funktion in Klinge, Laravel

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()]); 
} 

Das die Daten zurückgibt ich in einem JSON-Objekt benötigen. Ich versuche, dies neu zu erstellen, um die Daten in HTML-Code in meinem Laravel Blade zu erstellen. Was ist der richtige Weg, um die oben FormBuilder::BuildOrderForm($dealer, $aa, $form) in meine Klinge hier zu setzen:

@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 

Die ganze Klasse in der Steuerung:

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

wo in Ihrem Code ist Ihre try-Block liegt Ein Controller? eine Klasse? – idelara

+0

Sorry, die Klasse meines Controllers. Ich habe mich mit der ganzen Klasse aktualisiert. Aber ja, das ist der Controller für diese Ansicht –

+0

Ok ... Ein anderes Problem ... auf welche Route greifen Sie zu, und welche Methode in Ihrem Controller ist an diese Route gebunden? – idelara

Antwort

2

Sie sind wieder nur die codierten Daten, daher müssen Sie sehen werden, Bündel von JSON (oder Fehler, wenn Sie irgendwelche Ausnahmen abfangen).

Um alle Daten anzuzeigen, müssen Sie das gleiche tun, was Sie in Ihrer show() Methode tun, dh eine Ansicht zurückgeben und Daten innerhalb dieser bestimmten Ansicht oder teilweise rendern.

Versuchen Sie Folgendes:

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

nun in der Ansicht, Klinge verwenden, können Sie die Daten anzeigen, wie so:

@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 

Beachten Sie, dass Sie müssen loszuwerden, die dd() s in der Blade-Ansicht, da es mit dem HTML-Rendering aufhört. Sie müssen etwas wie @foreach() verwenden, um ein Array oder JSON zu rendern.

Ich hoffe, das hilft!

Prost!

-1
<?php 

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

?> 

Die functionName- sollte die 'statische'

Reglerfunktion Stichwort zB haben:

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

ich den Code aus diesem Link sah How to call a controller function inside a view in laravel 5

zum Beispiel:

Route:

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

MiscController:

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

Klinge Vorlage Ansicht:

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

OUTPUT:

error hello world 
+0

Was meinst du, bitte erklären. – webDev

+1

Ich habe oben Beispiel hinzugefügt –