我正在使用Kohana 3.2。 我有一个包含两个上传字段的类别表单:一个是图像,一个是横幅。在我的控制器中我得到了:
try{
$model_category->save();
}catch(ORM_Validation_Exception $e){
$errors = $e->errors('forms');
//echo Debug::vars($errors);
}catch (Exception $e){
$upload_errors = $e->getMessage();
}
模型中我的图片规则:
'photo' => array(
array('Upload::valid'),
array('Upload::type', array(array(':value'),array('jpeg', 'jpg', 'png', 'gif'))),
array('Upload::size', array(array(':value'), array('500000')))
),
'banner' => array(
//array(array($this, 'validate_photo'), array(':validation', ':field', ':value', 500, 100)),
array('Upload::valid'),
array('Upload::type', array(array(':value'),array('jpeg', 'jpg', 'png', 'gif'))),
array('Upload::size', array(array(':value'), array('5000000')))
),
我遇到了这样的问题:如果我留下一个必填字段,例如“name”并上传一个txt文件以强制两个异常发生,它只能捕获ORM_Validation_Exception。所以我的问题是如何合并两个错误数组。非常重要的是,我怎么知道它是对图像场还是横幅场的一种例外。
我已经尝试了几天但最终没有任何结果。请帮帮我!
答案 0 :(得分:1)
您可以使用Validation
类来验证上传,然后验证是否正常 - 保存模型。
类似的东西:
$validate_image = Validation::factory($_FILES);
$validate_image->rule($name, 'Upload::valid');
$validate_image->rule($name, 'Upload::type', array($_FILES['image'], array('jpeg', 'jpg', 'png', 'gif')));
$validate_image->rule($name, 'Upload::size', array($_FILES[$name], '500000'));
$validate_banner = Validation::factory($_FILES);
$validate_banner->rule($name, 'Upload::valid');
$validate_banner->rule($name, 'Upload::type', array($_FILES[$name], array('jpeg', 'jpg', 'png', 'gif')));
$validate_banner->rule($name, 'Upload::size', array($_FILES[$name], '500000'));
if ($validate_image->check() && $validate_banner->check()) {
$model_category->save();
}