Bug #29508
multipart/form-data cannot be saved!
Status: | Closed | Start date: | 2011-09-06 | |
---|---|---|---|---|
Priority: | -- undefined -- | Due date: | ||
Assigned To: | Sebastian Kurfuerst | % Done: | 0% |
|
Category: | Resource | |||
Target version: | - | |||
PHP Version: | Complexity: | |||
Has patch: | Affected Flow version: |
Description
Hey guys,
I have a form with an upload for a audio file. Since I changed the enctype of my form to "multipart/form-data" the form could not be saved anymore. No matter if I want to upload a file or not.
Controller and Model were set in the way it is described in http://flow3.typo3.org/fileadmin/manual/nightly/TheDefinitiveGuide/PartIII/ResourceManagement.html
This is my first bug report ever. I hope you find all necessary info in it.
Greets,
Andreas Keßler
Required argument "song" is not set.
20 TYPO3\FLOW3\MVC\Controller\AbstractController::mapRequestArgumentsToControllerArguments()
19 TYPO3\FLOW3\MVC\Controller\ActionController_Original::processRequest(TYPO3\FLOW3\MVC\Web\Request, TYPO3\FLOW3\MVC\Web\Response)
18 TYPO3\FLOW3\MVC\Dispatcher_Original::dispatch(TYPO3\FLOW3\MVC\Web\Request, TYPO3\FLOW3\MVC\Web\Response)
17 TYPO3\FLOW3\MVC\Dispatcher::dispatch(TYPO3\FLOW3\MVC\Web\Request, TYPO3\FLOW3\MVC\Web\Response)
16 call_user_func_array(array, array)
15 TYPO3\FLOW3\MVC\Dispatcher::FLOW3_AOP_Proxy_invokeJoinPoint(TYPO3\FLOW3\AOP\JoinPoint)
14 TYPO3\FLOW3\AOP\Advice\AdviceChain_Original::proceed(TYPO3\FLOW3\AOP\JoinPoint)
13 TYPO3\FLOW3\Security\Aspect\RequestDispatchingAspect_Original::setAccessDeniedResponseHeader(TYPO3\FLOW3\AOP\JoinPoint)
12 TYPO3\FLOW3\AOP\Advice\AroundAdvice_Original::invoke(TYPO3\FLOW3\AOP\JoinPoint)
11 TYPO3\FLOW3\AOP\Advice\AdviceChain_Original::proceed(TYPO3\FLOW3\AOP\JoinPoint)
10 TYPO3\FLOW3\Security\Aspect\RequestDispatchingAspect_Original::blockIllegalRequestsAndForwardToAuthenticationEntryPoints(TYPO3\FLOW3\AOP\JoinPoint)
9 TYPO3\FLOW3\AOP\Advice\AroundAdvice_Original::invoke(TYPO3\FLOW3\AOP\JoinPoint)
8 TYPO3\FLOW3\AOP\Advice\AdviceChain_Original::proceed(TYPO3\FLOW3\AOP\JoinPoint)
7 TYPO3\FLOW3\Security\Aspect\RequestDispatchingAspect_Original::initializeSecurity(TYPO3\FLOW3\AOP\JoinPoint)
6 TYPO3\FLOW3\AOP\Advice\AroundAdvice_Original::invoke(TYPO3\FLOW3\AOP\JoinPoint)
5 TYPO3\FLOW3\AOP\Advice\AdviceChain_Original::proceed(TYPO3\FLOW3\AOP\JoinPoint)
4 TYPO3\FLOW3\MVC\Dispatcher::dispatch(TYPO3\FLOW3\MVC\Web\Request, TYPO3\FLOW3\MVC\Web\Response)
3 TYPO3\FLOW3\MVC\Web\RequestHandler_Original::handleRequest()
2 TYPO3\FLOW3\Core\Bootstrap::handleWebRequest()
1 TYPO3\FLOW3\Core\Bootstrap::run()
Please include more helpful information!
History
#1 Updated by Andreas Keßler almost 4 years ago
I use FLOW3 beta 1
#2 Updated by Sebastian Kurfuerst almost 4 years ago
- Status changed from New to Needs Feedback
Hey Andreas,
Can you please post the Fluid form you used for this?
Thanks,
Sebastian
#3 Updated by Andreas Keßler almost 4 years ago
Hey Sebastian,
I hope the following form snippet helps
The problem appears if I add the <f:form.upload ... tag in order to upload a file.
Without it I can save and create records.
Bye,
Andi
<f:form action="update" object="{song}" name="song" method="post" enctype="multipart/form-data"> <div class="column left"> <section> <label for="title"> Titel* <small>Wie heißt der Song?</small> </label> <div> <f:form.textfield class="required" id="title" property="title" /> </div> </section> <section> <label for="composer"> Komponist* <small>Wer hat diesen Song geschrieben?</small> </label> <div> <f:form.textfield class="required" id="composer" property="composer" /> </div> </section> <section> <label for="artist"> Künstler* <small>Wer hat diesen Song aufgenommen?</small> </label> <div> <f:form.textfield class="required" id="artist" property="artist" /> </div> </section> <section> <label for="album"> Album* <small>In welchem Album ist dieser Song erschienen?</small> </label> <div> <f:form.textfield class="required" id="album" property="album" /> </div> </section> <section> <label for="year"> Jahr* <small>In welchem Jahr ist dieser Song erschienen?</small> </label> <div> <f:form.textfield class="required" id="year" property="year" /> </div> </section> </div> <div class="column right"> <section> <label for="tonality"> Tonart* <small>Wie ist die Haupttonart des Songs?</small> </label> <div> <f:form.textfield class="required" id="tonality" property="tonality" /> </div> </section> <section> <label for="bpm"> Tempo* <small>Wie schnell ist der Song?</small> </label> <div> <f:form.textfield class="required" id="bpm" property="bpm" /> </div> </section> <section> <label for="genre"> Genre* <small>Welchem Genre gehört der Song an?</small> </label> <div> <f:form.textfield class="required" id="genre" property="genre" /> </div> </section> <section> <label for="originalRessource"> Datei* <small></small> </label> <div> <f:form.upload property="originalRessource" id="originalRessource" /> </div> </section> </div> <div class="clear"> </div> <div> <section> <label style="margin-bottom: 10px">Songtext</label> <f:form.textarea class="songtext" cols="20" id="text" property="text" rows="20" /> </section> </div> <p> <input class="primary submit button" type="submit" value="Speichern" /> </p> </f:form>
#4 Updated by Andreas Keßler almost 4 years ago
Hey Sebastian,
I hope the following form snippet helps
The problem appears if I add the <f:form.upload ... tag in order to upload a file.
Without it I can save and create records.
Bye,
Andi
<f:form action="update" object="{song}" name="song" method="post" enctype="multipart/form-data"> <div class="column left"> <section> <label for="title"> Titel* <small>Wie heißt der Song?</small> </label> <div> <f:form.textfield class="required" id="title" property="title" /> </div> </section> <section> <label for="composer"> Komponist* <small>Wer hat diesen Song geschrieben?</small> </label> <div> <f:form.textfield class="required" id="composer" property="composer" /> </div> </section> <section> <label for="artist"> Künstler* <small>Wer hat diesen Song aufgenommen?</small> </label> <div> <f:form.textfield class="required" id="artist" property="artist" /> </div> </section> <section> <label for="album"> Album* <small>In welchem Album ist dieser Song erschienen?</small> </label> <div> <f:form.textfield class="required" id="album" property="album" /> </div> </section> <section> <label for="year"> Jahr* <small>In welchem Jahr ist dieser Song erschienen?</small> </label> <div> <f:form.textfield class="required" id="year" property="year" /> </div> </section> </div> <div class="column right"> <section> <label for="tonality"> Tonart* <small>Wie ist die Haupttonart des Songs?</small> </label> <div> <f:form.textfield class="required" id="tonality" property="tonality" /> </div> </section> <section> <label for="bpm"> Tempo* <small>Wie schnell ist der Song?</small> </label> <div> <f:form.textfield class="required" id="bpm" property="bpm" /> </div> </section> <section> <label for="genre"> Genre* <small>Welchem Genre gehört der Song an?</small> </label> <div> <f:form.textfield class="required" id="genre" property="genre" /> </div> </section> <section> <label for="originalRessource"> Datei* <small></small> </label> <div> <f:form.upload property="originalRessource" id="originalRessource" /> </div> </section> </div> <div class="clear"> </div> <div> <section> <label style="margin-bottom: 10px">Songtext</label> <f:form.textarea class="songtext" cols="20" id="text" property="text" rows="20" /> </section> </div> <p> <input class="primary submit button" type="submit" value="Speichern" /> </p> </f:form>
#5 Updated by Karsten Dambekalns almost 4 years ago
- Assigned To set to Sebastian Kurfuerst
#6 Updated by Carsten Bleicker almost 4 years ago
- File AnimalController.php added
- File Animal.php added
- File Media.php added
- File New.html added
same on my side. but it seems not to be the multipart form.
it seems to be the resource upload magic.
my root aggregate has a property to the model Media with @OneToOne.
Media is a Model with one property $originalResource with type \TYPO3\FLOW3\Resource\Resource and @OneToOne and its getter and setter. This seems to fail if i upload a file by <f:form.upload property="media.originalResource" /> it fails.
without this field i can save records. also with multipart form.
i added my files if you want to take a look.
#7 Updated by Carsten Bleicker almost 4 years ago
my log says:
11-09-11 22:24:58 3746 CRITICAL ORM Uncaught exception in line 495 of /home/pumatertion/public_html/zoo/Packages/Framework/Doctrine/Classes/ORM/UnitOfWork.php: A new entity was found through the relationship 'Bleicker\Zoo\Domain\Model\Animal#media' that was not configured to cascade persist operations for entity: Bleicker\Zoo\Domain\Model\Media@0000000041c2d791000000006a307bfa. Explicitly persist the new entity or configure cascading persist operations on the relationship. If you cannot find out which entity causes the problem implement 'Bleicker\Zoo\Domain\Model\Media#__toString()' to get a clue. - See also: 2011091122245602fbd5.txt [logged in Doctrine\ORM\UnitOfWork::computeAssociationChanges()]
i dit the following and after this i can save again:
public function updateAction(Animal $animal) {
$this->animalRepository->update($animal);
$this->flashMessageContainer->add('Updated the animal.');
$this->persistenceManager->add($animal->getMedia()); // <= After this it works
$this->redirect('show',NULL,NULL,array('animal'=>$animal));
}
#8 Updated by Bastian Waidelich almost 4 years ago
BTW: Uploading works in the Conference package, maybe that helps debugging (see http://git.typo3.org/FLOW3/Packages/Conference.git?a=blob;f=Resources/Private/Partials/Account/SpeakerProfile/Form.html;h=443bbda4d00a0d0592a61827b14d454082274c45;hb=HEAD)
#9 Updated by Andreas Keßler almost 4 years ago
Thx for the Link to the Conference package. Uploading works now.
The problem were the wrong annotations in the model
issue can be closed.
#10 Updated by Bastian Waidelich almost 4 years ago
- Category changed from - Error Handler Report - to Resource
- Status changed from Needs Feedback to Closed