2016-12-19 70 views
0

在我的laravel項目中,我創建了一個控制器,用於從所有刀片中刪除項目,調用相同的控制器。通過傳遞動態標識和型號名稱。但是沒有找到類的錯誤。例如: 例如:未找到'用戶'類。在laravel中動態使用模型

如何添加使用用戶;代碼在我的控制器動態。

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

這是一個非常糟糕的設計選擇,你真的不應該使用。 – AntoineB

+0

是的,真的很糟糕,你不應該這樣做。想象一下,傳遞一些其他的類名和一個id,如果用戶知道類名和id,用戶可以刪除它們。特別糟糕。 – astroanu

回答

4

這應該工作:

$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

地獄是''模型'和'$ mdoel'繼續''mdoel'未定義,你只有'$ mdoel_name' – g3mini

-1

商店命名空間類的字符串名字:

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