Php 在laravel中使用用户提供的模型名称动态创建模型
我被它卡住了,我找不到任何合适的解决办法。我想要实现的是基于复选框值的管理面板,我想要更改特定控件的活动状态,并使用ajax更新数据库值。我想在控制器中创建一个通用的ajax函数,以避免为其他控件(如菜单管理器、内容管理器、文档管理器等)重复编写相同的ajax函数。因此,我想向ajax控制器发送模型名称,以便可以使用相同的函数。Ajax调用工作正常,但无法生成适当的模型。例如: $m=新建应用程序\模型。$request->Model或$m='App\Model\'。$request->Model(添加最后一个\会产生错误)或中提供的答案也没有帮助。有没有更好的方法?如果有,请建议。我可以在下面做,但它是硬编码的,所以我想制作模型动态模型Php 在laravel中使用用户提供的模型名称动态创建模型,php,laravel,models,Php,Laravel,Models,我被它卡住了,我找不到任何合适的解决办法。我想要实现的是基于复选框值的管理面板,我想要更改特定控件的活动状态,并使用ajax更新数据库值。我想在控制器中创建一个通用的ajax函数,以避免为其他控件(如菜单管理器、内容管理器、文档管理器等)重复编写相同的ajax函数。因此,我想向ajax控制器发送模型名称,以便可以使用相同的函数。Ajax调用工作正常,但无法生成适当的模型。例如: $m=新建应用程序\模型。$request->Model或$m='App\Model\'。$request->Mode
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;
谢谢你 试试下面的代码
if($request->model){
$m = '\App'. '\' .$request->model;
//other code
}
您只需使用:
$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;
这是因为出于安全原因,您可能不想公开所有模型数据