1

在我所在的服务器没有启用 FILE_INFO 之后,我需要一种快速验证 Word 文档的方法。

Validator::register( 'word', function( $attribute, $value, $parameters )
{

    $valid_type = array(
        'application/msword',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    );

    $valid_extentions = array(
        'doc',
        'docx'
    );

    if( ! is_array( $value ) )
    {
        return false;
    }

    if( ! isset( $value['type'] ) )
    {
        return false;
    }

    if( ! in_array( strtolower( $value['type'] ), $valid_type ) )
    {
        return false;
    }

    if( ! in_array( strtolower( substr( strrchr( $value['name'], '.' ) , 1 ) ), $valid_extentions ) )
    {
        return false;
    }

    return true;

});

我知道这不是防弹的,但现在会做(如果你有任何建议,请添加)但是我如何为此添加一条消息,因为它目前返回

validation.word

有任何想法吗?

4

2 回答 2

3

要使消息全局化,请将其添加到主数组中的/app/lang/en/validation.php中的“url”之后,如下所示

<?php
return array(
    //...
    "url"              => "The :attribute format is invalid.",
    "word"             => "The document must be a Microsoft Word-file.",
//..

要使自定义验证规则全局使用,请使用/app/validators.php并添加如下内容:

<?php

class CustomValidator extends Illuminate\Validation\Validator
{
    //validate foo_bar
    public function validateFooBar($attribute, $value, $parameters)
    {
        return ($value == 'foobar');
    }
}

Validator::resolver(function($translator, $data, $rules, $messages)
{
    return new CustomValidator($translator, $data, $rules, $messages);
});
于 2013-09-07T18:25:36.623 回答
1

您必须定义一个新的验证规则和消息。

自定义规则如下所示:

$rules = array(
    'input_file' => 'required|word',
);

消息如下所示:

$messages = array(
    'word' => 'The document must be .doc!',
);

最后,您必须使用规则和消息调用您的验证器:

$validator = Validator::make(Input::get(), $rules, $messages);

查看官方文档自定义验证

于 2013-02-28T20:05:12.127 回答