Como salvar multiplas vezes?

Olá pessoal, tendo em vista que tenho duas tabelas com relação 1xN, gostaria de saber se alguém pode me ajudar a fazer o seguinte:

As tabelas são "Pessoa" e "Telefone" onde uma pessoa pode ter muitos telefones.

Na hora de cadastrar vou ter no formulário os dados da tabela "Pessoa" e quero colocar um botão ou link para que quem cadastre possa clicar e inserir o telefone no mesmo form, só assim vai aparecer os campos de telefone, e ai a pessoa vai poder clicar várias vezes para que possa cadastrar vários telefones.

Mais ou menos o mesmo esquema de inserir muiltiplas imagens.

Alguém já fez isso?

Breno,

Eu tenho um sistema que fiz isso, mais como está muito antigo não vou remodelar ele não, vou te passar.

javascript:




$('div[class*=maistelefone]').live('click', function(){

    var titulo = $('input[id=Telefone_titulo]');

    var telefone = $('input[id=Telefone_fone]');

    var contato = $('input[id=Telefone_contato]');


    if(titulo.val() == ''){

        $('<div title=\"Aviso\">Preencha corretamente o Título.</div>').dialog({buttons:{'OK': function() {

                $(this).dialog('close');

            }}});

        return false;

    } else if(telefone.val() == ''){

        $('<div title=\"Aviso\">Preencha corretamente o Telefone.</div>').dialog({buttons:{'OK': function() {

                $(this).dialog('close');

            }}});

        return false;

    } else if(contato.val() == ''){

        $('<div title=\"Aviso\">Preencha corretamente o Contato.</div>').dialog({buttons:{'OK': function() {

                $(this).dialog('close');

            }}});

        return false;

    } else {

        $('div[id=telefone]').append('<div id=\"add\" title=\"Clique aqui para remover\">' + titulo.val() + ' - ' + telefone.val() + ' - ' + contato.val() + ' <img src=\"" . (Html::image('icones/cross-circle.png')) . "\" align=\"absmiddle\" alt=\"Remover\" title=\"Remover\"> Remover</div>');

        $('<input />', {type: 'hidden', name: 'Telefone[titulo][]', val: titulo.val()}).appendTo('div[id=telefone]');

        $('<input />', {type: 'hidden', name: 'Telefone[fone][]', val: telefone.val()}).appendTo('div[id=telefone]');

        $('<input />', {type: 'hidden', name: 'Telefone[contato][]', val: contato.val()}).appendTo('div[id=telefone]');


        titulo.val('');

        telefone.val('');

        contato.val('');

    

    }


});


$('div[id=add]').css({'cursor':'pointer'}).live('click', function(){

    if(!confirm('Tem certeza que deseja remover?')){

        return false;

    }

    $(this).remove();

});



HTML:




<div class="row telefones">

        <?php echo Chtml::openTag('fieldset'); ?>

        <?php echo Chtml::tag('legend', array(), 'Telefone(s)') ?>


        <?php

        if (!$model->isNewRecord) {

            $telephones = Telefone::model()->findAll(

                            array(

                                'condition' => 'cod = :cod AND bd = :bd',

                                'params' => array(':cod' => $model->codmotorista, ':bd' => controller()),

                                'order' => 'titulo ASC'

                            )

            );


            echo '<table cellpadding="0" cellspacing="0" border="0">';

            echo '<tr>';

            echo '<th align="left"></th><th align="left">Título</th><th align="left">Telefone</th><th align="left">Contato</th>';

            echo '</tr>';

            foreach ($telephones as $telephone) {

                echo '<tr id="telefone' . $telephone->codtelefone . '">';

                echo '<td width="100">';

                echo CHtml::ajaxLink('<img src="' . Html::image('icones/cross-circle.png') . '" border="0" align="absmiddle" /> Remover',

                        Yii::app()->createUrl('my/TelefoneRemover'),

                        array(// ajaxOptions

                            'type' => 'POST',

                            'beforeSend' => "function(request){

                                if(!confirm('Deseja remover esse telefone?')){

                                    return false;

                                }

                                    return true;

                                }",

                            'success' => "function(data){

                                $('tr[id=telefone'+$telephone->codtelefone+']').remove();

                                }",

                            'data' => array('id' => $telephone->codtelefone)

                        )

                );

                echo '</td>';

                echo '<td width="100">' . $telephone->titulo . '</td><td width="100">' . $telephone->fone . '</td><td width="300">' . $telephone->contato . "</td>";

                echo '</tr>';

            }

            echo '</table>';

        }

        //$telefone->titulo = $telefone->fone = $telefone->contato = ''

        ?>

        <div class="row titulo">

            <?php echo $form->labelEx($telefone, 'titulo'); ?>

            <?php echo $form->textField($telefone, 'titulo', array('class' => 'input w200px', 'maxlength' => 60)); ?>

            <?php echo $form->error($telefone, 'titulo'); ?>

        </div>

        <div class="row telefone">

            <?php echo $form->labelEx($telefone, 'fone'); ?>

            <?php echo $form->textField($telefone, 'fone', array('class' => 'input w200px', 'maxlength' => 60)); ?>

            <?php echo $form->error($telefone, 'fone'); ?>

        </div>

        <div class="row contato">

            <?php echo $form->labelEx($telefone, 'contato'); ?>

            <?php echo $form->textField($telefone, 'contato', array('class' => 'input w200px', 'maxlength' => 60)); ?>

            <?php echo $form->error($telefone, 'contato'); ?>

        </div>

        <div class="row maistelefone">

            <img alt="" src="<?php echo Html::image('icones/plus-circle.png') ?>" align="absmiddle"/> adicionar

        </div>

        <div id="telefone" class="listatelefone"></div>


        <?php echo Chtml::closeTag('fieldset') ?>

        </div>



E no Controller tu consegue se virar?




foreach($_POST["Telefone"] as $fone){

...

}



Valeu, consegui fazer aqui.