Image

Note

  • 対象バージョン:2.3
  • 翻訳更新日:2013/6/9

Image 制約は File 制約とほぼ同じように機能しますが、画像ファイル向けに mimeTypes オプションと mimeTypesMessage オプションが自動的に設定されます。

また、Symfony 2.1 以降では画像の幅と高さを検証するオプションが追加されました。

この制約の基本機能については、File 制約のドキュメントを参照してください。

適用先 プロパティまたはメソッド
オプション
クラス Symfony\Component\Validator\Constraints\File
バリデーター Symfony\Component\Validator\Constraints\FileValidator

基本的な使い方

この製薬は、フォームの file フォームタイプでレンダリングするプロパティに対して使います。たとえば、著者情報のフォームを作成しており、著者の顔写真の画像ファイルをアップロードできるようにするとします。フォームでは、headshot プロパティを file タイプにします。Author クラスは次のようになります。

// src/Acme/BlogBundle/Entity/Author.php
namespace Acme\BlogBundle\Entity;

use Symfony\Component\HttpFoundation\File\File;

class Author
{
    protected $headshot;

    public function setHeadshot(File $file = null)
    {
        $this->headshot = $file;
    }

    public function getHeadshot()
    {
        return $this->headshot;
    }
}

headshot フィールドの File オブジェクトが有効な画像で、特定のサイズ以下であることを保証するには、次のようにします。

  • YAML
    # src/Acme/BlogBundle/Resources/config/validation.yml
    Acme\BlogBundle\Entity\Author
        properties:
            headshot:
                - Image:
                    minWidth: 200
                    maxWidth: 400
                    minHeight: 200
                    maxHeight: 400
    
  • Annotations
    // src/Acme/BlogBundle/Entity/Author.php
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Author
    {
        /**
         * @Assert\Image(
         *     minWidth = 200,
         *     maxWidth = 400,
         *     minHeight = 200,
         *     maxHeight = 400
         * )
         */
        protected $headshot;
    }
    
  • XML
    <!-- src/Acme/BlogBundle/Resources/config/validation.xml -->
    <class name="Acme\BlogBundle\Entity\Author">
        <property name="headshot">
            <constraint name="Image">
                <option name="minWidth">200</option>
                <option name="maxWidth">400</option>
                <option name="minHeight">200</option>
                <option name="maxHeight">400</option>
            </constraint>
        </property>
    </class>
    
  • PHP
    // src/Acme/BlogBundle/Entity/Author.php
    // ...
    
    use Symfony\Component\Validator\Mapping\ClassMetadata;
    use Symfony\Component\Validator\Constraints\Image;
    
    class Author
    {
        // ...
    
        public static function loadValidatorMetadata(ClassMetadata $metadata)
        {
            $metadata->addPropertyConstraint('headshot', new Image(array(
                'minWidth' => 200,
                'maxWidth' => 400,
                'minHeight' => 200,
                'maxHeight' => 400,
            )));
        }
    }
    

headshot プロパティが検証され、実際に存在するファイルであることが保証されます。画像の幅と高さが特定の大きさ以内であることも検証されます。

オプション

この制約では、File 制約のすべてのオプションも利用可能です。ただし、2 つのオプションはデフォルトで設定され、他のいくつかも動作が変更されています。

mimeTypes

: array または string デフォルト: image/*

既存の画像に関する MIME タイプの一覧については、IANA Web サイトを参照してください。

mimeTypesMessage

: string デフォルト: This file is not a valid image

minWidth

: integer

画像の幅が指定した数値のピクセル数以上であることが検証されます。

maxWidth

: integer

画像の幅が指定した数値のピクセル数以下であることが検証されます。

minHeight

: integer

画像の高さが指定した数値のピクセル数以上であることが検証されます。

maxHeight

: integer

画像の高さが指定した数値のピクセル数以下であることが検証されます。

sizeNotDetectedMessage

: string デフォルト: The size of the image could not be detected

システムで画像のサイズを検出できなかった場合に、このメッセージが表示されます。画像サイズに関する 4 つの制約の 1 つでも設定されていると、このエラーが発生する可能性があります。

maxWidthMessage

: string デフォルト: The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px

画像の幅が maxWidth オプションで指定した幅よりも大きかった場合に、このメッセージが表示されます。

minWidthMessage

: string デフォルト: The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px

画像の幅が minWidth オプションで指定した幅よりも小さかった場合に、このメッセージが表示されます。

maxHeightMessage

: string デフォルト: The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px

画像の高さが maxHeight オプションで指定した高さよりも大きかった場合に、このメッセージが表示されます。

minHeightMessage

: string デフォルト: The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px

画像の高さが minHeight オプションで指定した高さよりも小さかった場合に、このメッセージが表示されます。

このページのコンテンツ

前のドキュメント

File

次のドキュメント

CardScheme

ソース



クイックリンク

コメントリスト


ご質問や翻訳不備等お気軽にコメントください。


現在、翻訳が古くなっている箇所が多くあります。1箇所、1行などほんの少量でもかまいませんので、ドキュメント翻訳にご協力いただける方を募集しています。日本 Symfony ユーザー会メーリングリストまでご連絡ください。