我坚持使用它,找不到适合的解决方案。我想要实现的是基于复选框值的管理面板,我想更改特定控件的活动状态并使用Ajax更新数据库值。我想在控制器中创建一个通用的ajax函数,以避免为菜单控件,内容管理器,文档管理器等其他控件重复编写相同的ajax函数,所以我想将模型名称发送给ajax控制器,以便可以使用相同的函数。 Ajax调用工作正常,但是无法建立适当的模型。例如: $ m =新的App \ Model。$ request->模型或$ m ='App \ Model \'。$ request-> model(添加最后一个\会导致错误)或Dynamically use model in laravel中提供的答案均无济于事。有没有更好的方法,如果可以,请提出建议。我可以在下面执行此操作,但是它是硬编码的,所以我想创建模型动态模型
if($request->model ==='Menu')
$model = new \App\Http\Models\Menu;
else if($request->model === 'News')
$this->model = new \App\Http\Models\News;
else if($request->model === 'Document')
$this->model = new \App\Http\Models\Document;
谢谢!!!
答案 0 :(得分:1)
您可以使用:
$modelName = '\\App\\Http\\Models\\'.$request->model;
$this->model = new $modelName;
但是,您应该添加验证以确保仅使用某些允许的模型或至少执行以下操作:
if (! in_array($request->model, ['Menu', 'News', 'Document']))
{
throw new \Exception('Invalid model');
}
$modelName = '\\App\\Http\\Models\\'.$request->model;
$this->model = new $modelName;
这是因为出于安全原因,您可能不想公开所有模型数据。
答案 1 :(得分:0)
尝试以下代码
if($request->model){
$m = '\App'. '\' .$request->model;
//other code
}