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 に答える