2016-12-19 8 views
0

In meinem Laravel-Projekt erstelle ich einen Controller zum Löschen des Elements von allen Blade-Aufruf der gleichen Controller.Mit der Übergabe dynamische ID und Modellname. aber zeigt einen Fehler für die Klasse nicht gefunden. Beispiel: Klasse 'Benutzer' nicht gefunden.Dynamisch Modell in Laravel verwenden

Wie kann ich Benutzer hinzufügen; Code in meinem Controller dynamisch.

namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
class AjaxController extends Controller 
{ 
    public function deleteItem(Request $req) 
    { 
     use $req['model']; 
     $id = $req['id']; 
     $model_name = $req['model']; 
     $mdoel_name = $model_name::find($id); 
     $mdoel_name->delete(); 
     sactivity('delete')->performedOn($mdoel_name)->log(''); 
     return "success"; 
    } 
} 
+2

Dies ist ein unglaublich schlechtes Design Wahl, sollten Sie wirklich nicht, dass verwenden. – AntoineB

+0

Ja, wirklich schlecht, du solltest das nie tun. Stellen Sie sich vor, Sie könnten einen anderen Klassennamen und eine ID übergeben, der Benutzer kann Dinge löschen, wenn er den Klassennamen und eine ID kennt. wirklich schlecht. – astroanu

Antwort

4

sollte diese Arbeit:

$id = $req['id']; 
    $model_name = '\\App\\'.$req['model']; 
    $model = new $model_name; 
    $model_name = $model->find($id); 
    $model->delete(); 
    sactivity('delete')->performedOn($model_name)->log(''); 
    return "success"; 
+0

Die Hölle geht weiter mit '$ model' und' $ mdoel' auch, '$ mdoel' ist undefiniert, Sie haben nur' $ mdoel_name' – g3mini

-1

Speichern Sie die Namespace-Klassennamen als String:

$Model = Input::get('Model'); 
$NamespacedModel = '\\Model\\' . $Model; 
$Action = $NamespacedModel::find($Id);