php - 如何解决传递给 CodeIgniter\Validation\Validation::run() 的参数 1 必须是数组类型或 null,给定的对象?
问题描述
我在 Codeigniter 4 中进行文件验证时遇到问题。代码如下。
验证文件中的代码是:
public $image = [
'image_path' => [
'label' => 'Image',
'rules' => 'uploaded[image_path]|is_image[image_path]|max_size[image_path, 1024]|mime_in[image_path,image/jpg,image/jpeg,image/png]'
]
];
并且,控制器中的代码是:
if($image->isValid() && !$image->hasMoved()):
if(!$this->validation->run($image, "image")):
$this->session->setFlashdata('image_errors', $this->validation->getErrors() ?? "");
return redirect()->back()->withInput();
endif;
endif;
但是每当我尝试运行这些代码时,都会发生以下错误:
Argument 1 passed to CodeIgniter\Validation\Validation::run() must be of the type array or null, object given.
请为此建议我可能的解决方案。
谢谢你。
解决方案
当我们需要在控制器中验证表单时,我们遵循以下步骤:
- 使用 validate() 方法而不是使用 $validation 属性请参阅控制器验证数据
- 在 recirect()->with() 方法中设置 flashdata 参见常用函数
- if 条件语法应使用方括号 { },仅在视图文件中使用 if else endif(可选)。请参阅替代语法
非常重要,建议阅读用户指南
if ($image->isValid() && ! $image->hasMoved())
{
if (! $this->validate('image'))
{
return redirect()->back()->withInput()->with('image_errors', $this->validator->getErrors())
}
}
如果你想使用验证类就这样做
if ($image->isValid() && ! $image->hasMoved())
{
$this->validation->setRuleGroup('image');
if (! $this->validation->withRequest($this->request)->run())
{
return redirect()->back()->withInput()->with('image_errors', $this->validation->getErrors())
}
}
我希望它适用于您的代码。
推荐阅读
- android - 有没有办法将画中画限制为仅在应用程序中工作并且在后台时不持续存在?
- reactjs - 如何在 React Native 中通过 AsyncStorage 获取和对齐项目?
- excel - 任务窗格未显示 VSTO
- heroku - Heroku Dyno 内存与数据库内存
- reactjs - 在 react/redux 应用程序中,哪里是进行 api 调用以将更新状态持久保存到后端服务器的正确位置?
- firebase - 您可以在 Firebase 身份验证中删除一段时间内未验证的用户吗?
- javascript - 设备方向值跳来跳去?
- c# - 在 Active Directory 中查找上次更新电子邮件地址的日期/时间
- r - 使用因子列扩展数据框
- javascript - 延迟加载的后处理,将名称映射到标题和键