Ich versuche das VichImageBundle mit Symfony3 zu verwenden, für den Aufruf von FormType :: class gibt es noch keine Dokumentation, die in Verbindung mit dem Vich Image Bundle neu in S3 ist. Ich habe alles außer dem beweglichen Teil.Symfony 3 VichUploaderBundle verschiebe Bilder nicht in das richtige Verzeichnis
ich eine Ordnerstruktur hier innerhalb des Projekts hier gemacht haben: web/images/aod_images
ich die Konfiguration in der yml Datei wie folgt festgelegt haben:
vich_uploader:
db_driver: orm
mappings:
aod_images:
uri_prefix: /images/aod_images
upload_destination: %kernel.root_dir%/../web/images/aod_images
Die Entitätseigenschaften befinden sich hier: (ich habe die Getter und Setter an Ort und Stelle)
/**
* @Vich\UploadableField(mapping="aod_images", fileNameProperty="dailyChartName")
*
* @var File
*/
private $dailyChart;
/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $dailyChartName;
/**
* @Vich\UploadableField(mapping="aod_images", fileNameProperty="twohourChartName")
*
* @var File
*/
private $twohourChart;
/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $twohourChartName;
ich bin eine Menge Zeit Verfahren entsprechend in der Controller-Klasse aufrufen, und zwar auf der editAction und der Newac tion-Controller:
$analysis->setUpdatedAt(new \DateTime('now'));
In der Klasse Formtype für diese Entität Ich habe weit folgend so:
->add('dailyChartName', FileType::class, array())
->add('twohourChartName', FileType::class, array())
Ich bin nicht sicher, welche Optionen für die passieren -> Methode noch für jedes Bild hinzufügen Beispiel.
Die Anwendung erstellt die Formulare korrekt.
Wenn ich eine tail -f die dev.log ich die folgende Meldung als Teil des doctrine.DEBUG Kanal:
(Symfony\\Component\\HttpFoundation\\File\\UploadedFile: /Applications/MAMP/tmp/php/phpEz6kJO)","13":"[object] (Symfony\\Component\\HttpFoundation\\File\\UploadedFile: /Applications/MAMP/tmp/php/phpVkbZgi)
Der Bildname-Eigenschaft nicht, was ich in der Config abgebildet überein .yml-Datei. Stattdessen spiegelt der Pfad die Route meiner lokalen Maschine zum internen php tmp-Verzeichnis wider. Ich benutze diesen Befehl von 127.0.0.1:8000 nachdem ich den Befehl server: run benutzt habe.
Wenn ich in dieses Verzeichnis schauen, hat das Bild NICHT wurde dorthin bewegt.
Der (falsche) Bildname wird in die Datenbank kopiert. Der Pfad zum Bild ist jedoch leer (falscher Pfad). Außerdem ist der richtige Pfad/Verzeichnis ebenfalls leer.
Grüße!
EDIT
Gemäß Vorschlag von Matteo ich die folgende Änderung Datei auf den FormType.php gemacht haben.
->add('dailyChart', VichFileType::class, array(
'required' => TRUE,
))
->add('twohourChart', VichFileType::class, array(
'required' => TRUE,
))
EDIT 2
In einem Versuch, meine Implementierung zu machen enger an die Dokumentation ich meinen updatedAt innerhalb des Unternehmens festgelegt gemäß docs Vorschlag gestellt zu halten.
Meine Set-Methoden in etwa so aussehen:
public function setDailyChart(\Symfony\Component\HttpFoundation\File\UploadedFile $dailyChart)
{
$this->dailyChart = $dailyChart;
if ($dailyChart) {
$this->updatedAt = new \DateTime('now');
}
return $this;
}
ich mit einem vollständigen Pfad explizit festgelegt typehinting. Jetzt erhalte ich den folgenden Fehler.
AppBundle\Entity\MTI_Cart\AodTechnicalAnalysis::setDailyChart() must be an instance of Symfony\Component\HttpFoundation\File\UploadedFile, instance of Symfony\Component\HttpFoundation\File\File given
überprüfen Sie, ob Sie Ihre c korrekt beschriften Lass dich mit der 'Uploadable' Annotation wie hier [hier] beschrieben (https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to -eine-Entität). Ich denke, Sie tun, ist nur ein Scheck – Matteo
ja, ich habe sicher, dass ... @Vich \ UploadableField (Zuordnung = "aod_images", fileNameProperty = "twoohourChartName"). Ich habe diesen Teil direkt von der Seite übernommen, mit der Sie verlinkt haben. Ich habe nur überprüft, dass meine Zuordnungen hier in der Entität denen in der Konfigurationsdatei entsprechen. Es passt perfekt zusammen. –
/** * @ORM \ Entity * @Vich \ Uploadable */ Klasse Produkt – Matteo