Формы CakePhp 1 формируют несколько таблиц - PullRequest
0 голосов
/ 28 августа 2011

У меня есть два партнера-контролера и сделки.

Когда я добавляю сделку, есть идентификатор партнера на местах, и в cakephp это создает раскрывающийся список со всеми партнерами. Есть ли что-то, что, если пользователь хочет добавить нового партнера, он может установить флажок и появится форма добавления. Попытался добавить поля ввода партнера, и да, это создает нового партнера, но в таблице сделок он добавляет идентификатор партнера выбранного партнера из раскрывающегося списка, а не нового партнера.

Сделка Вей

<div class="deals form">
<h2>Add New Deal</h2>
<p>Use the form below to fill in the new deals details.</p>
<?php echo $form->create('Deal');?>
    <?php
        echo $cksource->create();
        echo $form->input('title');
        echo $form->input('price');
        echo $form->input('market_price');
        echo $form->input('discount');
        echo $form->input('buy_link');
        echo $form->input('image');

        $config['toolbar'] = array(
            array( 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-','BulletedList' ),
            array( 'Image', 'Link', 'Unlink', 'Anchor' )
        );
        ?><label>Deal Highlights</label><?php
        echo $cksource->ckeditor('highlights', array('config'=>$config));
        ?><label>Deal Fine Print</label><?php
        echo $cksource->ckeditor('fine_print', array('config'=>$config));

        echo $form->input('description');
        ?><hr />
        <h3>Partners Details<?php
        echo $form->input('partner_id');
        echo $form->input('Partner.name');
        echo $form->input('Partner.address1');
        echo $form->input('Partner.city');
        echo $form->input('Partner.county');
        echo $form->input('Partner.postcode');
        echo $form->input('city_id');
        ?><hr />
        <h3>Schedule Deal<?php
        echo $form->input('start');
        echo $form->input('end');
    echo $cksource->end();      
    ?>

<?php echo $form->end(__('Submit', true));?>
</div>

Контроллер сделок

function admin_add() {
        if (!empty($this->data['Partner']['name'])) {
            $this->data['Deal']['partner_id'] = "";
            if ($this->Deal->Partner->saveAll($this->data)) {
                $this->Session->setFlash(__('The deal has been saved', true));
                $this->redirect(array('controller'=>'deals', 'action' => 'add'));
            } else {
                $this->Session->setFlash(__('The deal could not be saved. Please, try again.', true));
            }
        } else {
            if ($this->Deal->saveAll($this->data)) {
                $this->Session->setFlash(__('The deal has been saved', true));
                $this->redirect(array('controller'=>'deals', 'action' => 'add'));
            }
        }
        $partners = $this->Deal->Partner->find('list');

        $cities = $this->Deal->City->find('list');
        $this->set(compact('partners', 'cities'));
    }

Есть идеи, ребята? Если вы знаете лучший способ сделать это, был бы рад услышать это,

Спасибо Dave

1 Ответ

0 голосов
/ 28 августа 2011

в контроллере перед сохранением, проверьте, не является ли форма партнера не пустой, затем очистите $ this-> data ['Deal'] ['partner_id'];

...