前提・実現したいこと
CakePHP3でUpload Pluginを使用しております。
基本的なことは問題なく行えて満足しているのですが、バリデーションエラーが発生し元の画面に戻った際、フォームで選択した画像が消えてしまい、再度選択する必要があります。
Upload Pluginを使用することを前提に、上記で再選択する行為をなくし、画像を引き継ぐことができますか?
HTMLの仕様上、 <imput type"file">
に対して値をセットできないことは承知しております。
Upload Pluginにこだわらなければいいことなのですが、実装する画面が多くなるべくPluginで済ませられるのであればいいなと思い質問致しました。
何かしらエラーが発生しているわけではないので、お見せできるコードもあまりないですが、Upload Pluginでやっていることを載せたいと思います。
php
1class ImagesTable extends Table 2{ 3 public function initialize(array $config) 4 { 5 parent::initialize($config); 6 7 $this->addBehavior('Josegonzalez/Upload.Upload', [ 8 'image' => [ 9 'path' => '{DS}webroot{DS}img{DS}{model}{DS}{field}{DS}', // 保存先指定 10 'nameCallback' => function ($data, $settings) { // リネーム 11 $ext = mb_strtolower(pathinfo($data['name'], PATHINFO_EXTENSION)); 12 return md5(uniqid(rand(), 1)) . '.' . $ext; 13 } 14 ] 15 ]); 16 } 17 18 public function validationDefault(Validator $validator) 19 { 20 21 $validator->provider('upload', \Josegonzalez\Upload\Validation\DefaultValidation::class); 22 23 $validator 24 ->requirePresence('image', 'create') 25 ->allowEmpty('image') 26 ->add('image', [ 27 'uploadedFile' => [ 28 'rule' => ['uploadedFile', ['types' => ['image/jpeg', 'image/png']]], 29 'last' => true, 30 'message' => 'jpeg , png のみアップロード可能です。' 31 ], 32 'fileAboveMinHeight' => [ 33 'rule' => ['isAboveMinHeight', 84], 34 'provider' => 'upload', 35 'last' => true, 36 'message' => '画像は124×84のものを使用してください。' 37 ], 38 'fileBelowMaxHeight' => [ 39 'rule' => ['isBelowMaxHeight', 84], 40 'provider' => 'upload', 41 'last' => true, 42 'message' => '画像は124×84のものを使用してください。' 43 ], 44 'fileAboveMinWidth' => [ 45 'rule' => ['isAboveMinWidth', 124], 46 'provider' => 'upload', 47 'last' => true, 48 'message' => '画像は124×84のものを使用してください。' 49 ], 50 'fileBelowMaxWidth' => [ 51 'rule' => ['isBelowMaxWidth', 124], 52 'provider' => 'upload', 53 'last' => true, 54 'message' => '画像は124×84のものを使用してください。' 55 ] 56 ]); 57 58 return $validator; 59 } 60}
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー