2

我正在使用 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')))
                ),

我遇到了这样的问题:如果我留下一个必填字段,例如“名称”并上传一个 txt 文件以强制发生两个异常,它只能捕获 ORM_Validation_Exception。所以我的问题是如何合并两个错误数组。非常重要的是,我怎么知道它是图像字段还是横幅字段的异常。

我已经尝试了好几天,但最终一无所获。请帮帮我!

4

1 回答 1

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();

    }
于 2013-06-02T06:35:18.277 回答