より高度なファイルフォーム要素、現在ロードされているアップロードされた画像を表示するウィジェット、および画像サイズの検証などを作成しています。
ファイルが検証されたら、フォーム要素自体がファイルを公的にアクセス可能なフォルダーにコピーするようにします。これは、a)画像を表示でき、b)フォーム全体が検証されない場合、ユーザーが画像を再アップロードする必要がないことを意味します。
とにかくそれは裏話ですが、基本的には、フォームがその要素を検証するときに、フォーム要素内から関数を実行する方法を理解する必要があります。フォーム要素クラスでonValidate()関数を作成するようなものです。
最も重要なのは、コントローラーにこぼれない(または可能な限り少ない)ソリューションが必要です。私はこれを実装するためのクリーンな方法を見つけるのに苦労しています。
こんなことをしたいのですが…
class File extends Element implements InputProviderInterface
{
....
public function isValid()
{
if ( $isValid = parent::isValid() ) {
echo "Hi there, glad you called";
}
return $isValid;
}