2016-07-26 16 views
-1

Ich möchte den Inhalt in der Datenbank auf meiner Ansichtsseite angezeigt werden. Ich habe die Beziehung zwischen Benutzer und Konto angewendet.Nicht definierte Variable in Laravel 5.2 weiß nicht warum

Ich habe eine andere Beziehung zwischen Benutzer und Post, die perfekt funktioniert.

Der Fehler Ich erhalte ist:

Error in 0401a2c6f4dbf412d9f16ba1e4ced9e54c8bb622.php Linie 132: Undefined variable: Konten (Ansicht: E: \ wamp \ www \ gal \ resources \ Ansichten \ myplace.blade. php)

meiner Ansicht Code:

<form action="{{route('account')}}" id="acc" method="post"> 
    <div class="col-lg-3"><label>Estado</label> 
    @foreach($accounts as $account) 
    <textarea style="display:none;" name="textfield4" id="textfield4">{{$account->estado}}</textarea></div> 
    <div class="col-lg-2 es" id="estado"></div> 
    @endforeach 

mein Controller:

<?php 

namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 
use App\Account; 
use Illuminate\Support\Facades\Auth; 

class AccountController extends Controller 
{ 
    public function account(Request $request) 
    { 
     $account = new Account(); 
     $account->estado = $request['textfield4']; 
     $request->user()->accounts()->save($account); 

     return redirect()->route('myplace'); 
    } 

    public function getaccount() 
    { 
     User::find(Auth::id())->accounts; 
     $accounts = Account::orderBy('created_at','desc')->get(); 

     return view('myplace',['accounts'=>$accounts]); 
    } 
} 
+0

Code scheint OK. Löschen Sie den Cache und versuchen Sie es erneut. – itachi

+0

@itachi sry aber funktioniert nicht ... jede andere mögliche Lösung? –

+0

Was ist mit Ihrer $ accounts-Variable, ist wirklich definiert? versuchen Sie, das Ergebnis vor dem Aufruf der Ansicht – Mirdrack

Antwort

0

dieser Code gegeben ...

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 
use App\Account; 
use Illuminate\Support\Facades\Auth; 

class AccountController extends Controller 
{ 
    public function account(Request $request) 
    { 
     $account = new Account(); 
     $account->estado = $request['textfield4']; 
     $request->user()->accounts()->save($account); 

     return redirect()->route('myplace'); 
    } 


    public function getaccount() 

    { 
     User::find(Auth::id())->accounts; 
     $accounts = Account::orderBy('created_at','desc')->get(); 

     return view('myplace',['accounts'=>$accounts]); 
    } 
} 

$account->estado = $request['textfield4']; sollte $account->estado = $request->input('textfield4', 'some_default_value');

User::find(Auth::id())->accounts; tut buchstäblich nichts, da Sie das Ergebnis nicht speichern, und $accounts = Account::orderBy('created_at','desc')->get(); sortiert alle Konten.

Wie keine Ihrer Konten mit orderBy angezeigt wird, liegt wahrscheinlich daran, keine Frage zu haben, was zu wählen ist oder Bedingungen dafür, dass es wahr ist. Standardwerte können helfen, aber wenn Sie etwas funky haben, kann es kaputt gehen. Ohne weiteren Code können wir nicht viel tun.

Eine weitere Vermutung ich darüber haben wird return view('myplace',['accounts'=>$accounts]); sollte return view()->make('myplace',['accounts'=>$accounts]);

EDIT sein:

war sein Problem zu/myplace er die Navigation, die Route nicht getaccount() es Strecken nach getmyplace(), bei dem die $ accounts-Variable nicht übergeben wurde.

+0

es hat nicht funktioniert ........ Ich kann Ihnen mehr Code zur Verfügung stellen.Jz sagen Sie mir .... wollen Sie Vollansicht-Code? –

+0

Es ist kein Problem mit der Ansicht, es ist ein Problem mit wahrscheinlich, wie Sie Routing, Middleware oder Model handhaben. Sie können bestätigen, dass Sie direkt vor der Erstellung der Ansicht "dd ($ accounts)" aktiviert haben, dass die Variable definiert ist und Werte aufweist, die korrekt aussehen? – Sieabah

+0

folgte ich das gleiche Verfahren wie für meine Beiträge und es funktionierte ..so warum nicht für dieses BTW i dd ($ Konto) habe und gt dies: Konto {# 183 ▼ #connection: null #table: null # primaryKey: "id" #keyType: "int" #perPage: 15 + Inkrementieren: true + Zeitstempel: true #attributes: array: 5 [▶] #original: array: 5 [▶] #relations [] #hidden [] #visible [] #appends [] #fillable [] #guarded: array: 1 [▶] #dates: [] #dateFormat: null #casts: [] #touches: [] #observables: [] #WITH: [] #morphClass: null + existiert: true + wasRecentlyCreated: true} –

0

Statt tun:

return view('myplace',['accounts'=>$accounts]); 

Sie können in Ihrem Controller-compact verwenden:

return view('myplace')->with(compact('accounts')); 
+0

sry aber funktioniert immer noch nicht .... eine andere mögliche Lösung? –

+0

In diesem Fall, wenn Sie das öffentliche Funktionskonto in Ihrem Controller treffen, berücksichtigen Sie, dass Sie eine Umleitung auf die Route ('myplace') ohne die Einstellung der "Konten" Variable –

+0

Das Problem scheint auf die Logik Ihrer views/controller, aber überprüfe, ob die Variable $ accounts die gesamte foreach-Schleife umschließt: @if ($ accounts) [email protected] –