laravel-6 - 如何用 Laravel 中的变量表示请求外观?
问题描述
我正在做一些实验,以使我的控制器尽可能地动态化。让我给你一个简短的。我有一个控制器徽标控制器,我设置如下:-
use App\Models\Logo;
class LogoController extends Controller
{
public function add(Request $request)
{
$data['entity'] = 'logo';
$newEntityObj = new Logo;
$newEntityObj->title = $title; // set title
$newEntityObj->type = $type; // set type
$saveNewEntityData = $newEntityObj->save(); // save the entity data
------------------
-------------------
}
}
现在我做了一些改变,比如:-
使用变量来表示徽标模型。
$modelClass = "App\\Models\\" . ucfirst($data['entity']);
然后,使用 $modelClass 变量对其执行 Eloquent 操作,如下所示:-
$newEntityObj = new $modelClass;
$newEntityObj->title = $title; // set title
$newEntityObj->type = $type; // set type
$saveNewEntityData = $newEntityObj->save(); // save the entity data
所以徽标控制器类已更新为:-
use App\Models\Logo;
class LogoController extends Controller
{
public function add(Request $request)
{
$data['entity'] = 'logo';
$modelClass = "App\\Models\\" . ucfirst($data['entity']);
$newEntityObj = new $modelClass;
$newEntityObj->title = $title; // set title
$newEntityObj->type = $type; // set type
$saveNewEntityData = $newEntityObj->save(); // save the entity data
------------------
-------------------
}
}
现在我创建了一个 Validationb 请求文件来使用它进行表单验证。我这样使用它:-
// Request Validation Inclusion //
use App\Http\Requests\AdminRequests\LogoValidation\LogoRequest;
public function add(LogoRequest $request)
{
--------------------------
--------------------------
}
现在,public function add(LogoRequest $request)
我不想写,而是想让它更有活力。像这样的东西: -
class LogoController extends Controller
{
public static $classEntity = 'logo';
public static $classFormattedEntity = null;
public static $classRequestVariable = null;
public function __construct()
{
$entityArray = explode('-', str_replace('_', '-', self::$classEntity));
foreach($entityArray as $keyEntity => $rowEntity)
{
if($keyEntity !== 0)
$entityArray[$keyEntity] = ucfirst($rowEntity);
}
self::$classFormattedEntity = implode('', $entityArray);
self::$classRequestVariable = "App\\Http\\Requests\\AdminRequests\\" . ucfirst(self::$classFormattedEntity) . "Validation\\" . ucfirst(self::$classFormattedEntity) . "Request";
}
public function add(self::$classRequestVariable $request)
{
..............................
..............................
}
}
变量self::$classRequestVariable
实际打印App\Http\Requests\AdminRequests\LogoValidation\LogoRequest
但是当我写public function add(self::$classRequestVariable $request)
而不是public function add(LogoRequest $request)
我收到以下错误:-
请帮忙!
解决方案
推荐阅读
- sql - 如何从 Django ORM 中的多个表中进行选择?
- node.js - 无法使用节点 js 通过对话流获取输入上下文
- c++ - QT:如何在按下按钮时从 url 下载
- android - 从 FirebaseStorage 加载数据时 ProgressBar 被关闭
- python - 错误:“NoneType”对象没有“附加”属性
- python - 正负整数字符串之和
- git - 在初始结帐时提取文件,但随后不跟踪进一步的更改
- c# - asp.net核心网页中的unicode
- kotlin - 在 Kotlin 中创建没有重复元素的 4 位数字
- python - 如何在'on message'事件discord.py rewrite中使用wait_for命令