[FLOW3-general] Creation of Objects not allowed
Manfred Rutschmann - VOLUMEN Werbe-/Internetagentur
rutschmann at agentur-volumen.de
Tue Mar 26 11:11:38 CET 2013
Hey List,
i need a ValueObject. I`ve created a model for this:
<?php
namespace Kunden\Domain\Model;
/* *
* This script belongs to the FLOW3 package "Kunden". *
* *
* */
use TYPO3\FLOW3\Annotations as FLOW3;
/**
* A Import Object
*
* @FLOW3\ValueObject
*/
class Import {
/**
* The table
* @FLOW3\Validate(type="NotEmpty")
* @var string
*/
protected $table;
/**
* Constructs this Aktion
*
*/
public function __construct() {
}
/**
* Get the Aktion's table
*
* @return string The import's table
*/
public function getTable() {
return $this->table;
}
}
?>
My template looks like this:
<f:layout name="Access" />
<f:section name="Content">
<div class="tablelessContent ui-corner-all">
<h3>Importassistent</h3>
<h4>Schritt 1: Ziel wählen</h4>
<p>Bitte wählen Sie ein Ziel für den Datenimport. Es werden alle Tabellen aufgelistet die für einen Import aktiviert sind:</p>
<f:form action="upload" absolute="1" controller="Import" method="post" name="import" object="{import}" class="importStep1">
<select class="visualselect" name="import[table]">
<option>Bitte wählen</option>
<f:for each="{tables}" as="table" iteration="i">
<option value="{i.index}">{table.tableName}</option>
</f:for>
</select>
<f:form.submit value="Weiter zu Schritt 2" class="ui-button"/>
</f:form>
</div>
</f:section>
And the Controller:
/**
* Index action
* @param \Kunden\Domain\Model\Import $import
* @return void
*/
public function indexAction(\Kunden\Domain\Model\Import $import = NULL) {
$i=0;
foreach ($this->classesToProcess as $class) {
$classArray[$i]["className"] = $this->$class->getEntityClassName();
$classArray[$i]["tableName"] = strtolower(str_replace("\\", "_", $this->$class->getEntityClassName()));
$classArray[$i]["repositoryName"] = $class;
$i++;
}
if($import === NULL){
//$import = new \Kunden\Domain\Model\Import;
}
$this->view
->assign("import", $import)
->assign("tables", $classArray);
}
/**
* initializeUploadAction
* @return void
*/
public function initializeUploadAction() {
$this->arguments['import']->getPropertyMappingConfiguration()->allowProperties('table');
//$this->arguments['import']->getPropertyMappingConfiguration()->allowCreationForProperty('table');
$this->arguments['import']->getPropertyMappingConfiguration()->allowCreationForSubProperty('import.table');
}
/**
* Upload action
* @param \Kunden\Domain\Model\Import $import
* @return void
*/
public function uploadAction(\Kunden\Domain\Model\Import $import) {
\TYPO3\FLOW3\var_dump($import);
}
Now after sending the form i get this:
#1297759968: Exception while property mapping for target type "Kunden\Domain\Model\Import", at property path "": Creation of objects not allowed. To enable this, you need to set the PropertyMappingConfiguration Value "CONFIGURATION_CREATION_ALLOWED" to TRUE
Why? It is not easy to use a simple value object and sending this with a form?
Thanks, Manfred
More information about the FLOW3-general
mailing list