mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
[alt names] add alt names on person creation form
This commit is contained in:
parent
289afcdd0c
commit
5154039182
@ -281,7 +281,7 @@ class PersonController extends Controller
|
||||
$r->setStatusCode(400);
|
||||
return $r;
|
||||
}
|
||||
|
||||
|
||||
$form = $this->createForm(
|
||||
//CreationPersonType::NAME,
|
||||
CreationPersonType::class,
|
||||
@ -294,7 +294,7 @@ class PersonController extends Controller
|
||||
$form->handleRequest($request);
|
||||
|
||||
$person = $this->_bindCreationForm($form);
|
||||
|
||||
|
||||
$errors = $this->_validatePersonAndAccompanyingPeriod($person);
|
||||
$this->get('logger')->info(sprintf('Person created with %d errors ', count($errors)));
|
||||
|
||||
@ -311,7 +311,7 @@ class PersonController extends Controller
|
||||
|
||||
$form = $this->createForm(
|
||||
CreationPersonType::NAME,
|
||||
new Person(),
|
||||
$person,
|
||||
array(
|
||||
'action' => $this->generateUrl('chill_person_review'),
|
||||
'form_status' => CreationPersonType::FORM_NOT_REVIEWED
|
||||
@ -338,7 +338,9 @@ class PersonController extends Controller
|
||||
);
|
||||
|
||||
return $this->render('ChillPersonBundle:Person:create_review.html.twig',
|
||||
array('alternatePersons' => $alternatePersons,
|
||||
array(
|
||||
'person' => $person,
|
||||
'alternatePersons' => $alternatePersons,
|
||||
'firstName' => $form['firstName']->getData(),
|
||||
'lastName' => $form['lastName']->getData(),
|
||||
'birthdate' => $form['birthdate']->getData(),
|
||||
|
@ -27,11 +27,11 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer;
|
||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\DateType;
|
||||
|
||||
use Chill\MainBundle\Form\Type\CenterType;
|
||||
use Chill\PersonBundle\Form\Type\GenderType;
|
||||
use Chill\MainBundle\Form\Type\DataTransformer\CenterTransformer;
|
||||
use Chill\PersonBundle\Form\CreationPersonType;
|
||||
use Chill\PersonBundle\Config\ConfigPersonAltNamesHelper;
|
||||
use Chill\PersonBundle\Form\Type\PersonAltNameType;
|
||||
|
||||
class CreationPersonType extends AbstractType
|
||||
{
|
||||
@ -47,9 +47,19 @@ class CreationPersonType extends AbstractType
|
||||
* @var CenterTransformer
|
||||
*/
|
||||
private $centerTransformer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var ConfigPersonAltNamesHelper
|
||||
*/
|
||||
protected $configPersonAltNamesHelper;
|
||||
|
||||
public function __construct(CenterTransformer $centerTransformer) {
|
||||
public function __construct(
|
||||
CenterTransformer $centerTransformer,
|
||||
ConfigPersonAltNamesHelper $configPersonAltNamesHelper
|
||||
) {
|
||||
$this->centerTransformer = $centerTransformer;
|
||||
$this->configPersonAltNamesHelper = $configPersonAltNamesHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -78,6 +88,14 @@ class CreationPersonType extends AbstractType
|
||||
))
|
||||
->add('center', HiddenType::class)
|
||||
;
|
||||
|
||||
if ($this->configPersonAltNamesHelper->hasAltNames()) {
|
||||
$builder->add('altNames', PersonAltNameType::class, [
|
||||
'by_reference' => false,
|
||||
'force_hidden' => true
|
||||
]);
|
||||
}
|
||||
|
||||
$builder->get('birthdate')
|
||||
->addModelTransformer($dateToStringTransformer);
|
||||
$builder->get('creation_date')
|
||||
@ -105,6 +123,12 @@ class CreationPersonType extends AbstractType
|
||||
))
|
||||
->add('center', CenterType::class)
|
||||
;
|
||||
|
||||
if ($this->configPersonAltNamesHelper->hasAltNames()) {
|
||||
$builder->add('altNames', PersonAltNameType::class, [
|
||||
'by_reference' => false
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace Chill\PersonBundle\Form\DataMapper;
|
||||
|
||||
use Symfony\Component\Form\DataMapperInterface;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Symfony\Component\Form\Exception\UnexpectedTypeException;
|
||||
use Chill\PersonBundle\Entity\PersonAltName;
|
||||
@ -44,7 +45,15 @@ class PersonAltNameDataMapper implements DataMapperInterface
|
||||
public function mapFormsToData($forms, &$viewData)
|
||||
{
|
||||
$mapIndexToKey = [];
|
||||
foreach ($viewData->getIterator() as $key => $altName) {
|
||||
|
||||
if (is_array($viewData)) {
|
||||
$dataIterator = $viewData;
|
||||
} else {
|
||||
$dataIterator = $viewData instanceof ArrayCollection ?
|
||||
$viewData->toArray() : $viewData->getIterator();
|
||||
}
|
||||
|
||||
foreach ($dataIterator as $key => $altName) {
|
||||
/** @var PersonAltName $altName */
|
||||
$mapIndexToKey[$altName->getKey()] = $key;
|
||||
}
|
||||
@ -64,7 +73,12 @@ class PersonAltNameDataMapper implements DataMapperInterface
|
||||
->setKey($key)
|
||||
->setLabel($form->getData())
|
||||
;
|
||||
$viewData->add($altName);
|
||||
|
||||
if (is_array($viewData)) {
|
||||
$viewData[] = $altName;
|
||||
} else {
|
||||
$viewData->add($altName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||
use Chill\PersonBundle\Config\ConfigPersonAltNamesHelper;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
|
||||
@ -38,7 +39,9 @@ class PersonAltNameType extends AbstractType
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
foreach ($this->getKeyChoices() as $label => $key) {
|
||||
$builder->add($key, TextType::class, [
|
||||
$builder->add(
|
||||
$key,
|
||||
$options['force_hidden'] ? HiddenType::class : TextType::class, [
|
||||
'label' => $label,
|
||||
'required' => false
|
||||
]);
|
||||
@ -64,6 +67,9 @@ class PersonAltNameType extends AbstractType
|
||||
{
|
||||
$resolver
|
||||
->setDefault('class', \Chill\PersonBundle\Entity\PersonAltName::class)
|
||||
->setDefined('force_hidden')
|
||||
->setAllowedTypes('force_hidden', 'bool')
|
||||
->setDefault('force_hidden', false)
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -39,11 +39,3 @@ services:
|
||||
- "%chill_person.validation.birtdate_not_before%"
|
||||
tags:
|
||||
- { name: validator.constraint_validator, alias: birthdate_not_before }
|
||||
|
||||
chill.main.form.person_creation:
|
||||
class: Chill\PersonBundle\Form\CreationPersonType
|
||||
arguments:
|
||||
- "@chill.main.form.data_transformer.center_transformer"
|
||||
tags:
|
||||
- { name: form.type, alias: chill_personbundle_person_creation }
|
||||
|
||||
|
@ -1,11 +1,25 @@
|
||||
services:
|
||||
chill.person.form.person_creation:
|
||||
class: Chill\PersonBundle\Form\PersonType
|
||||
Chill\PersonBundle\Form\PersonType:
|
||||
arguments:
|
||||
- "%chill_person.person_fields%"
|
||||
- '%chill_person.person_fields%'
|
||||
- '@Chill\PersonBundle\Config\ConfigPersonAltNamesHelper'
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
chill.person.form.person_creation:
|
||||
alias: 'Chill\PersonBundle\Form\PersonType'
|
||||
deprecated: true
|
||||
|
||||
Chill\PersonBundle\Form\CreationPersonType:
|
||||
arguments:
|
||||
- '@chill.main.form.data_transformer.center_transformer'
|
||||
- '@Chill\PersonBundle\Config\ConfigPersonAltNamesHelper'
|
||||
tags:
|
||||
- { name: form.type }
|
||||
|
||||
chill.main.form.person_creation:
|
||||
alias: 'Chill\PersonBundle\Form\CreationPersonType'
|
||||
deprecated: true
|
||||
|
||||
chill.person.accompanying_period_closing_motive:
|
||||
class: Chill\PersonBundle\Form\Type\ClosingMotiveType
|
||||
|
@ -28,6 +28,10 @@
|
||||
{{ form_row(form.firstName, { 'label' : 'First name'|trans }) }}
|
||||
|
||||
{{ form_row(form.lastName, { 'label' : 'Last name'|trans }) }}
|
||||
|
||||
{% if form.altNames is defined %}
|
||||
{{ form_widget(form.altNames) }}
|
||||
{% endif %}
|
||||
|
||||
{{ form_row(form.birthdate, { 'label' : 'Date of birth'|trans }) }}
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ path('chill_person_view', {'person_id': person.id } ) }}">
|
||||
{{ person }}{% spaceless %}
|
||||
{{ person|chill_entity_render_string }}{% spaceless %}
|
||||
{% if person.isOpen == false %}
|
||||
<i class="icon-lock"></i>
|
||||
{% endif %}
|
||||
@ -65,11 +65,8 @@
|
||||
{{ form_start(form) }}
|
||||
<h2>{{ 'You will create this person'|trans }}</h2>
|
||||
<dl>
|
||||
<dt>{{ 'First name'|trans }}</dt>
|
||||
<dd>{{ firstName }}</dd>
|
||||
|
||||
<dt>{{ 'Last name'|trans }}</dt>
|
||||
<dd>{{ lastName }}</dd>
|
||||
<dt>{{ 'Name'|trans }}</dt>
|
||||
<dd>{{ person|chill_entity_render_string }}</dd>
|
||||
|
||||
<dt>{{ 'Date of birth'|trans }}</dt>
|
||||
<dd>{{ birthdate|localizeddate('long', 'none', app.request.locale)|default( 'Unknown date of birth'|trans ) }}</dd>
|
||||
@ -79,6 +76,11 @@
|
||||
|
||||
<dt>{{ 'Creation date'|trans }}</dt>
|
||||
<dd>{{ creation_date|localizeddate('long', 'none', app.request.locale) }}</dd>
|
||||
|
||||
{% if form.altNames is defined %}
|
||||
{# mark as rendered #}
|
||||
{{ form_widget(form.altNames) }}
|
||||
{% endif %}
|
||||
</dl>
|
||||
|
||||
{{ form_rest(form) }}
|
||||
|
Loading…
x
Reference in New Issue
Block a user