Home | Symfony2Doc »リファレンスドキュメント »バリデータリファレンス »Image

このページのコンテンツ

前のドキュメント

File

次のドキュメント

CardScheme

ソース



クイックリンク


コメントリスト

Powered by Disqus

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


コンテンツ上部に更新日の記載のないページは、翻訳の内容が2.0相当のものになっております。最新の内容は原文のページをご確認ください。

Image

Note

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

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

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

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

適用先 プロパティまたはメソッド
オプション
クラス File
バリデーター 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 オプションで指定した高さよりも小さかった場合に、このメッセージが表示されます。

blog comments powered by Disqus