संपादित करें द्वारा क्षेत्र में उपयोग के लिए नहीं बुलाया सत्यापन: यहाँ एक github पूर्ण कोड के साथ समस्या यहSymfony3 प्रपत्र एक मॉडल ट्रांसफार्मर
पुन: पेश करने के लिए मैं निम्नलिखित इकाई
class Place
{
use Traits\HasId;
/**
* Used for form.
*
* @Assert\Image(
* mimeTypes = {"image/png", "image/jpeg"},
* minWidth = 50,
* maxWidth = 1000,
* minHeight = 50,
* maxHeight = 1000,
* maxSize = "1M"
*)
*/
private $imageFile = null;
/**
* @ORM\OneToOne(targetEntity="MyImage", orphanRemoval=true, cascade={"persist"})
*/
protected $image;
}
निम्न प्रपत्र के साथ है
class AdminPlaceType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new HasImageTransformer();
$builder->add('imageFile')->addModelTransformer($transformer);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => 'AppBundle\Entity\Place']);
}
}
और निम्नलिखित मॉडल ट्रांसफार्मर
class HasImageTransformer implements DataTransformerInterface
{
public function transform($hasImage)
{
return $hasImage;
}
/**
* reverse transforms.
*/
public function reverseTransform($hasImage)
{
$file = $hasImage->getImageFile();
$myImage = new MyImage();
$myImage->setData(file_get_contents($file->getPathName()))
$myImage->setMimeType($file->getMimeType());
$hasImage->setImage($myImage);
}
}
मैं एक सही छवि अपलोड कर सकता हूं, और फॉर्म डेटाबेस में सही ढंग से सहेजा गया है।
लेकिन अगर मैं एक गलत छवि (उदाहरण के लिए एक .txt फ़ाइल) भेजते हैं तो फॉर्म अभी भी डेटाबेस में किसी भी त्रुटि के बिना सहेजा जाता है
लेकिन अगर मैं फार्म से addModelTransformer
निकालने के लिए, तो मैं सही मान्यता मिल गया त्रुटि
यह फ़ाइल एक वैध छवि
के रूप में मेरे ट्रांसफार्मर मूल imageFile
क्षेत्र संशोधित नहीं करता है, मैं सोच रहा हूँ क्या इस समस्या का कारण बन सकता है नहीं है।
मैं php7 और symfony3.3.4 उपयोग कर रहा हूँ
अद्यतन: मेरी गलती है, सिर्फ देखा है कि आप दो अलग-अलग गुण वहाँ स्थापित कर रहे हैं। '' MyImage' '' Symfony \ Component \ HttpFoundation \ File \ File'' के उत्तराधिकारी है? सिम्फनी की 'छवि वैलिडेटर 'शायद यह नहीं जान सके कि आपकी ऑब्जेक्ट को कैसे संभालना है ताकि यह केवल इसे अनदेखा कर सके। –
असल में "माईमेज" एक वैधता सजावट सेट नहीं है, यह डेटाबेस में इकाई है (कुछ अजीब कारणों से, यह एक ब्लॉब फ़ील्ड में छवि स्टोर है), imageFile फ़ील्ड वह है जिसमें वैधकर्ता है, और इसमें " अपलोड किए गए फॉर्म से अपलोड किया गया फ़ाइल "ऑब्जेक्ट। ट्रांसफॉर्मर अपलोड किए गए फ़ाइल –
से MyImage ऑब्जेक्ट बनाते हैं, मैंने समस्या को पुन: उत्पन्न करने का प्रयास किया, लेकिन मुझे कई त्रुटियां और प्रश्न थे ... सभी फ़ाइलों को लिखने का प्रयास करें, क्योंकि वे पर्याप्त नहीं हैं ... -1 – pooler