2017-05-09 2 views
1

In meinem Crud-Controller versuche ich, den Namen der Person, die gerade bearbeitet wird, zu bekommen.Laravel Backpack - aktuellen Datensatz von Crud Controller

so

http://192.168.10.10/admin/people/93/edit 

Im Volk crud Controller

public function setup() { 
dd(\App\Models\People::get()->first()->name) 
} 

Dies gibt die erste Person, die nicht die Person, die derzeit bearbeitet wird.

Wie kann ich die aktuelle Person zurückkehren (mit einem ID von 93 in diesem Beispiel)

+0

In Bearbeitung haben Sie die ID. Sie können den Namen nicht in der Setup-Funktion abrufen, da dieser direkt nach dem Controller ausgeführt wird. Finde mich hier, wenn das keinen Sinn ergibt https://gitter.im/BackpackForLaravel/Lobby – Indra

Antwort

-1

Sie Person gegen ID benötigen, versuchen Sie unter

public function setup($id) { 
dd(\App\Models\People::find($id)->name); 
} 
+0

So funktioniert Rucksack nicht – Indra

+0

@Indra wie funktioniert es! –

+1

Setup hat keine Parameter. Da Setup im übergeordneten Controller deklariert ist, müssen Sie dieselbe Deklaration beibehalten. Überprüfen Sie das Handbuch des Rucksacks – Indra

0

sagte Rahman über find($id) Methode. Wenn Sie die 404-Ausnahme abbrechen möchten, verwenden Sie einfach die Methode findOrFail($id). Meiner Meinung nach ist es besser, Art und Weise, weil find($id)->name werfen

„Der Versuch, Eigentum der Nicht-Objektfehler zu erhalten ...“

findOrFail ($ id) ersten Benutzer mit dem angegebenen ID holen. Wenn nicht existiert nur 404 werfen, nicht 500.

Die beste Antwort ist:

public function edit($id) 
{ 
    return \App\Models\People::findOrFail($id); 
} 

Viel Glück.

0

Ok, also, da Sie Rucksack Blick in CrudController verwenden, um zu sehen, wie die Methode aussieht:

public function edit($id) 
    { 
     $this->crud->hasAccessOrFail('update'); 

     $this->data['entry'] = $this->crud->getEntry($id); 
     $this->data['crud'] = $this->crud; 
     $this->data['fields'] = $this->crud->getUpdateFields($id); 

     $this->data['id'] = $id; 

     return view('crud::edit', $this->data); 
    } 

können also jetzt Sie die Bearbeitungsfunktion überschreiben und ändern, was Sie wollen. Sie können sogar eine benutzerdefinierte Bearbeitungsseite erstellen, wenn Sie dies wünschen.

-Setup auf der anderen Seite ist in der Regel verwendet, um Dinge hinzuzufügen, wie

$this->crud->addClause(...); 

Oder Sie können sogar den gesamten Konstruktor bekommen und es in der Setup-Methode setzen, weil Setup-Aufruf wie folgt aussieht:

public function __construct() 
    { 
     // call the setup function inside this closure to also have the request there 
     // this way, developers can use things stored in session (auth variables, etc) 
     $this->middleware(function ($request, $next) { 
      $this->setup(); 

      return $next($request); 
     }); 
    } 

So könnten Sie etwas tun wie \Auth::user()->id;

Auch es ist normal, so zu arbeiten. Wenn Sie nur reines Laravel verwenden, haben Sie nur Zugriff auf die aktuelle ID in den Routen, die Sie entsprechend festgelegt haben.

Verwandte Themen