{#
/**
 * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 * @link          https://cakephp.org CakePHP(tm) Project
 * @since         2.0.0
 * @license       https://www.opensource.org/licenses/mit-license.php MIT License
 */
#}
{% set belongsTo = Bake.aliasExtractor(modelObj, 'BelongsTo') %}
{% set belongsToMany = Bake.aliasExtractor(modelObj, 'belongsToMany') %}
{% set compact = ["'#{singularName}'"] %}
    /**
     * Edit method
     *
     * @param string|null $id {{ singularHumanName }} id.
     * @return \Cake\Http\Response|null|void Redirects on successful edit, renders view otherwise.
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
    public function edit($id = null)
    {
        ${{ singularName }} = $this->{{ currentModelName }}->get($id, contain: {{ Bake.exportArray(belongsToMany)|raw }});
{% if Bake.hasPlugin('Authorization') %}
        $this->Authorization->authorize(${{ singularName }});
{% endif %}
        if ($this->request->is(['patch', 'post', 'put'])) {
            ${{ singularName }} = $this->{{ currentModelName }}->patchEntity(${{ singularName }}, $this->request->getData());
            if ($this->{{ currentModelName }}->save(${{ singularName }})) {
                $this->Flash->success(__('The {{ singularHumanName|lower }} has been saved.'));

                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The {{ singularHumanName|lower }} could not be saved. Please, try again.'));
        }
{% for assoc in belongsTo|merge(belongsToMany) %}
    {%~ set otherName = Bake.getAssociatedTableAlias(modelObj, assoc) %}
    {%~ set otherPlural = otherName|variable %}
        ${{ otherPlural }} = $this->{{ currentModelName }}->{{ otherName }}->find('list', limit: 200)->all();
    {%~ set compact = compact|merge(["'#{otherPlural}'"]) %}
{% endfor %}
        $this->set(compact({{ compact|join(', ')|raw }}));
    }
