Added route and controller for editing hat

So that the person id is in the URL.
This commit is contained in:
naomi 2018-04-12 13:42:52 +02:00
parent 79c49eb996
commit 58ac24db8f
3 changed files with 35 additions and 6 deletions

View File

@ -52,7 +52,7 @@ use Drupal\user\UserInterface;
* "canonical" = "/zencrm/hat/{hat}", * "canonical" = "/zencrm/hat/{hat}",
* "add-page" = "/zencrm/hat/add", * "add-page" = "/zencrm/hat/add",
* "add-form" = "/zencrm/hat/add/{hat_type}", * "add-form" = "/zencrm/hat/add/{hat_type}",
* "edit-form" = "/zencrm/hat/{person}/{hat}/edit", * "edit-form" = "/zencrm/hat/{hat}/edit",
* "delete-form" = "/zencrm/hat/{hat}/delete", * "delete-form" = "/zencrm/hat/{hat}/delete",
* "collection" = "/zencrm/hat", * "collection" = "/zencrm/hat",
* }, * },

View File

@ -10,10 +10,10 @@ use Drupal\Core\Controller\ControllerBase;
class HatController extends ControllerBase { class HatController extends ControllerBase {
/** /**
* Hello. * Displays a form for creating a hat.
* The type of hat and the person are prepopulated.
* *
* @return string * @return form for creating a hat
* Return Hello string.
*/ */
public function createHatForPerson($person_id, $hat_type_id) { public function createHatForPerson($person_id, $hat_type_id) {
$values = array( $values = array(
@ -21,13 +21,34 @@ class HatController extends ControllerBase {
'person' => $person_id 'person' => $person_id
); );
$node = \Drupal::entityTypeManager() $hat = \Drupal::entityTypeManager()
->getStorage('hat') ->getStorage('hat')
->create($values); ->create($values);
$form = \Drupal::entityTypeManager() $form = \Drupal::entityTypeManager()
->getFormObject('hat', 'default') ->getFormObject('hat', 'default')
->setEntity($node); ->setEntity($hat);
return \Drupal::formBuilder()->getForm($form);
}
/**
* Displays a form for editing a hat.
* The reason it is here is that the URL needs to have the person id in it
* in order to filter the contact details entity reference view to only show ones for that person.
* (The intuitive way to bring this about - changing the edit route for the entity itself - causes problems with the delete route)
*
* @return form for editing a hat
*/
public function editHatForPerson($person_id, $hat_id) {
error_log("hjhjhjhj");
$hat = \Drupal::entityTypeManager()
->getStorage('hat')
->load($hat_id);
$form = \Drupal::entityTypeManager()
->getFormObject('hat', 'default')
->setEntity($hat);
return \Drupal::formBuilder()->getForm($form); return \Drupal::formBuilder()->getForm($form);
} }

View File

@ -6,6 +6,14 @@ zencrm.hat.create:
requirements: requirements:
_permission: 'access content' _permission: 'access content'
zencrm.hat.edit:
path: '/zencrm/hat/{person_id}/{hat_id}/edit'
defaults:
_controller: '\Drupal\zencrm\Controller\HatController::editHatForPerson'
_title: 'Edit Hat'
requirements:
_permission: 'access content'
zencrm.contact_details.create: zencrm.contact_details.create:
path: '/zencrm/contact_details/{person_id}/add' path: '/zencrm/contact_details/{person_id}/add'
defaults: defaults: