Yii Framework Forum: Personalizando tela de cadastro no YII com select, radio e checkbox - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Personalizando tela de cadastro no YII com select, radio e checkbox Rate Topic: ***** 1 Votes

#1 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 23 September 2010 - 06:08 AM

Estou iniciando com o framework Yii, peguei o banco de um sistema que estou fazendo e criei os models e views.
Vi que ele além de ter criado as classes criou as telas de cadastro e todo aquele 'crud'.
Porém nas telas onde deveria vim um Select com os dados de uma outra tabela, ele apenas criou um input do tipo texto para eu escrever a ID, sendo que na verdade deveria ser criado um <select>.

Minha dúvida é como eu devo criar esses <select> com a informação de uma outra tabela.

Estou mandando junto uma imagem para ilustrar essa dúvida, onde vou fazer um cadastro e preciso selecionar uma empresa.
Terei que criar os campos do cadastro de endereço, porém na hora de cadastrar, vou cadastrar o endereço na tabela endereço, pegar sua id e por fim realizar o cadastro na tabela 'Cadastro'.

Attached File(s)


Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 23 September 2010 - 07:13 AM

Ola kayzen, Seja bem vindo!

Sobre sua dúvida, o Yii ele não reconhece automáticamente se o tipo da tabela e input ou select, esse tratamento de dados no formulário, tu tera que fazer manualmente, abaixo vou mostrar um modelo básico, para você popular seu <select> com os dados que você deseja:

<div class="row codprofissional">
<?php echo $form->labelEx($model, 'codprofissional'); ?>
        <?php
        $profissional = Profissional::model()->findAll(array('order' => 'nome ASC'));
        $profissional = CHtml::listData($profissional, 'codprofissional', 'nome');

        echo $form->dropDownList($model, 'codprofissional', $profissional,
                array(
                    'prompt' => 'Selecione',
                )
        );
        ?>
        <?php echo $form->error($model, 'codprofissional'); ?>
    </div>


Ai no seu caso, tu vai trocar o Profissional pela tabela Empresa, e o codprofissional, pelo idempresa!

Sobre pegar o ID de um dado inserido e simples.

No actionCreate().
Após o $model->save(), ou abaixo dele, tu consegue capturar o ID inserido ou qualquer outro dado.

Por exemplo:
public function actionCreate() {
        $model = new Paciente;
        $telefone = new Telefone;

        // Uncomment the following line if AJAX validation is needed
        $this->performAjaxValidation($model);

        if (isset($_POST['Paciente'])) {

            $model->attributes = $_POST['Paciente'];

            if ($model->save()) {

                if (isset($_POST['Telefone'])) {

                            $telefone->datacriacao = date('Y-m-d H:i:s');
                            $telefone->cod = $model->codpaciente;
                            $telefone->bd = controller();
                            $telefone->save(false);
                    
                }
              
            }
        }

        $this->render('create', array(
            'model' => $model,
            'telefone' => $telefone
        ));
    }


Com esses 2 exemplos tu já consegue adiantar boa parte dos _form.php.

Como você pode ver, no $telefone->cod, peguei o último dado inserido da tabela paciente ($model->save())
$telefone->cod = $model->codpaciente;

This post has been edited by Newerton: 23 September 2010 - 07:14 AM

Newerton Vargas de Araújo
0

#3 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 23 September 2010 - 02:26 PM

Antes de mais nada, muito obrigado Newerton pela ajuda...fiz o que vc me falou e consegui fazer a listagem das empresas em um select.. embora na verdade não era isso que eu tinha que fazer...

O que tenho que fazer é criar um formulario de cadastro de uma empresa, contendo dados da empresa, endereco e site (Dai tenho uma tabela pra endereco, empresa e site) e suas PKs devem ficar numa tabela chamada cadastro.

Tentei criar um <input text> para começar a colocar os campos de endereço, como logradouro, bairro, etc... dentro do form do cadastro e deu esse erro:
( Property "Cadastro.nme_logradouro" is not defined ) , estou mexendo dentro do arquivo 'views/Cadastro/_form.php'

       <div class="row">
		<?php echo $form->labelEx($model,'Logradouro'); ?>
		<?php echo $form->textField($model,'nme_logradouro'); ?>
		<?php echo $form->error($model,'nme_logradouro'); ?>
	</div>


Abaixo estou mandando um print dessa tela de como ela deve funcionar, se puder me dar uma luz em como criar essa tela e fazer ela funcionar...

Attached File  Captura_de_tela.png (168.52K)
Number of downloads: 157
Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 23 September 2010 - 03:15 PM

View Postkayzen, on 23 September 2010 - 02:26 PM, said:

Antes de mais nada, muito obrigado Newerton pela ajuda...fiz o que vc me falou e consegui fazer a listagem das empresas em um select.. embora na verdade não era isso que eu tinha que fazer...

O que tenho que fazer é criar um formulario de cadastro de uma empresa, contendo dados da empresa, endereco e site (Dai tenho uma tabela pra endereco, empresa e site) e suas PKs devem ficar numa tabela chamada cadastro.

Tentei criar um <input text> para começar a colocar os campos de endereço, como logradouro, bairro, etc... dentro do form do cadastro e deu esse erro:
( Property "Cadastro.nme_logradouro" is not defined ) , estou mexendo dentro do arquivo 'views/Cadastro/_form.php'

       <div class="row">
		<?php echo $form->labelEx($model,'Logradouro'); ?>
		<?php echo $form->textField($model,'nme_logradouro'); ?>
		<?php echo $form->error($model,'nme_logradouro'); ?>
	</div>


Abaixo estou mandando um print dessa tela de como ela deve funcionar, se puder me dar uma luz em como criar essa tela e fazer ela funcionar...

Attachment Captura_de_tela.png


Kayzen,
Esse erro ocorreu, por que na tabela Cadastro, não existe o atributo 'nme_logradouro'.

Detalha bem o formulário, e me mostra quais <input> estão na tabela Cadastro, e quais <input> vai pra outras Tabela.
Newerton Vargas de Araújo
0

#5 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 23 September 2010 - 03:43 PM

Veja esse DER, tem a tabela Cadastro em destaque.. quero cadastrar os dados nela... porém o formulário vai ser igual ta na imagem que mandei no post acima.
Tai o form do meu formulario do cadastro.

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'cadastro-form',
	'enableAjaxValidation'=>false,
)); ?>

	<p class="note">Campos com <span class="required">*</span> são obrigatórios.</p>

	<?php echo $form->errorSummary($model); ?>
        
	<div class="row">
		<?php echo $form->labelEx($model,'empresa_idempresa'); ?>
		<?php echo $form->textField($model,'empresa_idempresa'); ?>
		<?php echo $form->error($model,'empresa_idempresa'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'endereco_idendereco'); ?>
		<?php echo $form->textField($model,'endereco_idendereco'); ?>
		<?php echo $form->error($model,'endereco_idendereco'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'dat_data'); ?>
		<?php echo $form->textField($model,'dat_data',array('size'=>45,'maxlength'=>45)); ?>
		<?php echo $form->error($model,'dat_data'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'home_idhome'); ?>
		<?php echo $form->textField($model,'home_idhome'); ?>
		<?php echo $form->error($model,'home_idhome'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->


Attached File  tabela.png (220.64K)
Number of downloads: 90

Existe uma forma melhor de eu fazer esse cadastro?
Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#6 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 24 September 2010 - 06:32 AM

Kayzen,

Esse 'empresa_idempresa','endereco_idendereco','home_idhome', serão todo <select>?

E o seguinte, vou explicar meio por cima!

Observa no seu crud, o CadastroController -> actionCreate(), que foi estanciado um novo objeto [$model = new Cadastro;], e no final dessa função, tem a renderização dele [$this->render('create')], porém no arquivo create.php não está o formulário, no create.php ele ainda renderiza o _form, com 'renderPartial', e dizendo que o 'model' => $model, bom até ae tudo bem.

O que acontece no momento, é que seu _form.php, só está lendo o Model [Cadastro], caso queira por exemplo colocar o Endereco, para o usuário digitar, para aquela empresa vai ter que fazer mais ou menos assim:

public function actionCreate() {
        $model = new Empresa;
		$endereco = new Endereco;
		$site = new Site;

		// Validação do formulário
		$this->performAjaxValidation($model);

		// Verifica se os dados
        if (isset($_POST['Empresa']) && isset($_POST['Endereco']) && isset($_POST['Site'])) {

            $model->attributes = $_POST['Empresa'];
			$endereco->attributes = $_POST['Endereco'];
			$site->attributes = $_POST['Site'];

			// Validando totalmente os 3 Model [Empresa, Endereco, Site]
            if($model->validate() && $endereco->validate() && $site->validate()){

			
				// Salvando os dados na suas respectiva tabela
				// Empresa
				$model->save();
				// Endereço
				$endereco->save();
				// Site
				$site->save();
                
				// Salvando os dados na tabela Cadastro
				$cadastro = new Cadastro;
				$cadastro->empresa_idempresa = $model->idempresa;
				$cadastro->endereco_idendereco = $endereco->idendereco;
				$cadastro->site_idsite = $site->idsite;
				$cadastro->save(false);
            }
        }

        $this->render('create', array(
            'model' => $model,
            'endereco' => $endereco,
			'site' => $site
        ));
    }


O raciocínio e mais ou menos isso, agora no view/empresa/create.php tu tem que fazer mais ou menos assim:
echo $this->renderPartial('_form', array('model'=>$model, 'endereco'=>$endereco, 'site'=>$site));


Ai no form, o que for da tabela Empresa, tu usa o $model, se for da tabela Endereço tu usa o $endereco, olha o exemplo:
<div class="row">
                <?php echo $form->labelEx($model,'nme_fantasia'); ?>
                <?php echo $form->textField($model,'nme_fantasia'); ?>
                <?php echo $form->error($model,'nme_fantasia'); ?>
        </div>
<div class="row">
                <?php echo $form->labelEx($endereco,'nme_logradouro'); ?>
                <?php echo $form->textField($endereco,'nme_logradouro'); ?>
                <?php echo $form->error($endereco,'nme_logradouro'); ?>
        </div>
<div class="row">
                <?php echo $form->labelEx($site,'nme_site'); ?>
                <?php echo $form->textField($site,'nme_site'); ?>
                <?php echo $form->error($site,'nme_site'); ?>
        </div>


Olha que cada um esta chamando o atributo da sua tabela.

Não posso fazer tudo pra você, mais com isso tu pode ter uma noção de como começar!

Observando, que tudo isso tu tem que fazer no formulário da empresa, tu so vai usar o Model Cadastro, para inserir os dados da Empresa, Endereco e Site, então tudo isso que expliquei é:
controllers/EmpresaController.php
views/empresa/_form.php
views/empresa/create.php

Espero ter ajudado, se tiver algum erro me desculpe!
Newerton Vargas de Araújo
0

#7 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 24 September 2010 - 07:04 AM

Que nada já deu pra ter uma boa idéia.. ;D

Esse 'empresa_idempresa','endereco_idendereco','home_idhome', serão todos <input>, igual a imagem do sistema que to fazendo lá em cima..

Agora os campos da empresa, endereço e home, não teria que ser montado na views/cadastro/_form.php não?

Por que até então, a idéia principal, é montar um formulário pro cliente preencher todos os dados numa mesma tela e em seguida clicar em cadastrar...

No final da tarde vou tentar fazer isso funcionar ou pelo menos no minimo montar a tela de cadastro...

Certamente minha próxima dúvida é fazer o cadastro funcionar.. mas como se diz.. vamos por parte.. primeiro montar a tela.. depois fazer funcionar... certamente eu devo criar um novo tópico pra não deixar esse aqui muito extenso.. e pra finalizar esse, vou expor o código criado.. e um print da tela.
Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#8 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 24 September 2010 - 08:15 PM

View Postkayzen, on 24 September 2010 - 07:04 AM, said:

Que nada já deu pra ter uma boa idéia.. ;D

Esse 'empresa_idempresa','endereco_idendereco','home_idhome', serão todos <input>, igual a imagem do sistema que to fazendo lá em cima..

Agora os campos da empresa, endereço e home, não teria que ser montado na views/cadastro/_form.php não?

Por que até então, a idéia principal, é montar um formulário pro cliente preencher todos os dados numa mesma tela e em seguida clicar em cadastrar...

No final da tarde vou tentar fazer isso funcionar ou pelo menos no minimo montar a tela de cadastro...

Certamente minha próxima dúvida é fazer o cadastro funcionar.. mas como se diz.. vamos por parte.. primeiro montar a tela.. depois fazer funcionar... certamente eu devo criar um novo tópico pra não deixar esse aqui muito extenso.. e pra finalizar esse, vou expor o código criado.. e um print da tela.


Kayzen,

Pode montar sim no views/cadastro/_forms.php, o que expliquei caso fosse usar o formulário pra cadastro só da empresa, mais ai fica ao seu critério.

Vamos continuando nesse tópico mesmo, o assunto ainda não fugiu do titulo! hehe
Newerton Vargas de Araújo
0

#9 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 25 September 2010 - 08:22 AM

Newerton,

Estamos aqui denovo.. :rolleyes:

Bom, fiz o que você me falou e consegui montar a tela de cadastro e como sempre lá vem as dúvidas.

1º No <labelEx> vai o nome do campo a ser preenchido, como padrão o YII pega o que tá no banco de dados,
porém no meu caso, não pode ser o que está no banco, por causa dos prefixos que uso como referência do tipo de atributo.

Personalizei o nome do campo, e ele deixou de fazer a validação do mesmo. :( Como resolver esse problema?

2º Como faço pra esse cadastro funcionar? Porque clico em 'Create' (cadastrar) e não acontece nada...

3º O campo 'Data Cadastro' é a data atual do servidor tem como eu deixar esse campo como hidden e colocar as horas como value nele?



Abaixo segue os códigos criados:

:: CadastroController.php

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
        
	public function actionCreate()
	{
		$model      = new Cadastro();
                $empresa    = new Empresa();
                $endereco   = new Endereco();
                $home       = new Home();

		// Descomente a seguinte linha se a validação AJAX é necessário
		//$this->performAjaxValidation($model);

		if(isset($_POST['Cadastro']) && isset($_POST['Empresa']) && isset($_POST['Endereco']) && isset($_POST['Home']))
		{
                    $model->attributes      = $_POST['Cadastro'];
                    $empresa->attributes    = $_POST['Empresa'];
                    $endereco->attributes   = $_POST['Endereco'];
                    $home->attributes       = $_POST['Home'];

                    /*
                     * Validando os 4 models
                     */

                    if($model->validate() && $empresa->validate() && $endereco->validate() && $home->validate()){

                        if($model->save() && $empresa->save() && $endereco->save() && $home->save()){
                                $this->redirect(array('view','id'=>$model->idcadastro));
                        }

                    }

		}

		$this->render('create',array(
			'model'     => $model,
                        'empresa'   => $empresa,
                        'endereco'  => $endereco,
                        'home'      => $home
		));
	}


::create.php
<?php
    $this->breadcrumbs=array(
            'Cadastros'=>array('index'),
            'Create',
    );

    $this->menu=array(
            array('label'=>'List Cadastro', 'url'=>array('index')),
            array('label'=>'Manage Cadastro', 'url'=>array('admin')),
    );
?>

<h1>Criando cadastro</h1>

<?php 
    echo $this->renderPartial('_form', array('model'=>$model, 'empresa'=>$empresa, 'endereco'=>$endereco, 'home'=>$home));
?>


:: _form.php
<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'cadastro-form',
	'enableAjaxValidation'=>false,
)); ?>

	<p class="note">Campos com <span class="required">*</span> são obrigatórios.</p>

	<?= $form->errorSummary($model); ?>
        
        <!-- Dados da tabela empresa -->

        <div class="row">
            <?= $form->labelEx($empresa,    'Nome fantasia');?>
            <?= $form->textField($empresa,  'nme_fantasia', array('size'=>45,'maxlength'=>45));?>
            <?= $form->error($empresa,      'nme_fantasia');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'Razão social');?>
            <?= $form->textField($empresa,  'nme_razao_social', array('size'=>45,'maxlength'=>45));?>
            <?= $form->error($empresa,      'nme_razao_social');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'CNPJ');?>
            <?= $form->textField($empresa,  'doc_cnpj', array('size'=>15,'maxlength'=>15));?>
            <?= $form->error($empresa,      'doc_cnpj');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'Inscrição estadual');?>
            <?= $form->textField($empresa,  'doc_insc_estadual', array('size'=>15,'maxlength'=>15));?>
            <?= $form->error($empresa,      'doc_insc_estadual');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'Data fundação');?>
            <?= $form->textField($empresa,  'dat_data_fundacao', array('size'=>10,'maxlength'=>10));?>
            <?= $form->error($empresa,      'dat_data_fundacao');?>
        </div>

        <!-- Dados da tabela endereco -->

	<div class="row">
            <?= $form->labelEx($endereco,   'Logradouro'); ?>
            <?= $form->textField($endereco, 'nme_logradouro', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($endereco,     'nme_logradouro'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Número'); ?>
            <?= $form->textField($endereco, 'num_numero', array('size'=>5,'maxlength'=>5)); ?>
            <?= $form->error($endereco,     'num_numero'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Complemento'); ?>
            <?= $form->textField($endereco, 'nme_complemento', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($endereco,     'nme_complemento'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Bairro'); ?>
            <?= $form->textField($endereco, 'nme_bairro', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($endereco,     'nme_cidade'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Estado'); ?>
            <?= $form->textField($endereco, 'sgl_uf', array('size'=>2,'maxlength'=>2, 'value'=>'MG')); ?>
            <?= $form->error($endereco,     'sgl_uf'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'CEP'); ?>
            <?= $form->textField($endereco, 'nme_cep', array('size'=>15,'maxlength'=>15)); ?>
            <?= $form->error($endereco,     'nme_cep'); ?>
	</div>

        <!-- Dados da tabela cadastro -->

	<div class="row">
            <?= $form->labelEx($model,      'Data cadastro'); ?>
            <?= $form->textField($model,    'dat_data', array('size'=>10,'maxlength'=>10)); ?>
            <?= $form->error($model,        'dat_data'); ?>
	</div>


         <!-- Dados da tabela Home page -->


	<div class="row">
            <?= $form->labelEx($home,      'Site'); ?>
            <?= $form->textField($home,    'nme_site', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($home,        'nme_site'); ?>
	</div>

	<div class="row buttons">
            <?= CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->

Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#10 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 25 September 2010 - 08:48 AM

View Postkayzen, on 25 September 2010 - 08:22 AM, said:

Newerton,

Estamos aqui denovo.. :rolleyes:

Bom, fiz o que você me falou e consegui montar a tela de cadastro e como sempre lá vem as dúvidas.

1º No <labelEx> vai o nome do campo a ser preenchido, como padrão o YII pega o que tá no banco de dados,
porém no meu caso, não pode ser o que está no banco, por causa dos prefixos que uso como referência do tipo de atributo.

Personalizei o nome do campo, e ele deixou de fazer a validação do mesmo. :( Como resolver esse problema?

2º Como faço pra esse cadastro funcionar? Porque clico em 'Create' (cadastrar) e não acontece nada...

3º O campo 'Data Cadastro' é a data atual do servidor tem como eu deixar esse campo como hidden e colocar as horas como value nele?



Abaixo segue os códigos criados:

:: CadastroController.php

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
        
	public function actionCreate()
	{
		$model      = new Cadastro();
                $empresa    = new Empresa();
                $endereco   = new Endereco();
                $home       = new Home();

		// Descomente a seguinte linha se a validação AJAX é necessário
		//$this->performAjaxValidation($model);

		if(isset($_POST['Cadastro']) && isset($_POST['Empresa']) && isset($_POST['Endereco']) && isset($_POST['Home']))
		{
                    $model->attributes      = $_POST['Cadastro'];
                    $empresa->attributes    = $_POST['Empresa'];
                    $endereco->attributes   = $_POST['Endereco'];
                    $home->attributes       = $_POST['Home'];

                    /*
                     * Validando os 4 models
                     */

                    if($model->validate() && $empresa->validate() && $endereco->validate() && $home->validate()){

                        if($model->save() && $empresa->save() && $endereco->save() && $home->save()){
                                $this->redirect(array('view','id'=>$model->idcadastro));
                        }

                    }

		}

		$this->render('create',array(
			'model'     => $model,
                        'empresa'   => $empresa,
                        'endereco'  => $endereco,
                        'home'      => $home
		));
	}


::create.php
<?php
    $this->breadcrumbs=array(
            'Cadastros'=>array('index'),
            'Create',
    );

    $this->menu=array(
            array('label'=>'List Cadastro', 'url'=>array('index')),
            array('label'=>'Manage Cadastro', 'url'=>array('admin')),
    );
?>

<h1>Criando cadastro</h1>

<?php 
    echo $this->renderPartial('_form', array('model'=>$model, 'empresa'=>$empresa, 'endereco'=>$endereco, 'home'=>$home));
?>


:: _form.php
<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'cadastro-form',
	'enableAjaxValidation'=>false,
)); ?>

	<p class="note">Campos com <span class="required">*</span> são obrigatórios.</p>

	<?= $form->errorSummary($model); ?>
        
        <!-- Dados da tabela empresa -->

        <div class="row">
            <?= $form->labelEx($empresa,    'Nome fantasia');?>
            <?= $form->textField($empresa,  'nme_fantasia', array('size'=>45,'maxlength'=>45));?>
            <?= $form->error($empresa,      'nme_fantasia');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'Razão social');?>
            <?= $form->textField($empresa,  'nme_razao_social', array('size'=>45,'maxlength'=>45));?>
            <?= $form->error($empresa,      'nme_razao_social');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'CNPJ');?>
            <?= $form->textField($empresa,  'doc_cnpj', array('size'=>15,'maxlength'=>15));?>
            <?= $form->error($empresa,      'doc_cnpj');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'Inscrição estadual');?>
            <?= $form->textField($empresa,  'doc_insc_estadual', array('size'=>15,'maxlength'=>15));?>
            <?= $form->error($empresa,      'doc_insc_estadual');?>
        </div>

        <div class="row">
            <?= $form->labelEx($empresa,    'Data fundação');?>
            <?= $form->textField($empresa,  'dat_data_fundacao', array('size'=>10,'maxlength'=>10));?>
            <?= $form->error($empresa,      'dat_data_fundacao');?>
        </div>

        <!-- Dados da tabela endereco -->

	<div class="row">
            <?= $form->labelEx($endereco,   'Logradouro'); ?>
            <?= $form->textField($endereco, 'nme_logradouro', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($endereco,     'nme_logradouro'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Número'); ?>
            <?= $form->textField($endereco, 'num_numero', array('size'=>5,'maxlength'=>5)); ?>
            <?= $form->error($endereco,     'num_numero'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Complemento'); ?>
            <?= $form->textField($endereco, 'nme_complemento', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($endereco,     'nme_complemento'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Bairro'); ?>
            <?= $form->textField($endereco, 'nme_bairro', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($endereco,     'nme_cidade'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'Estado'); ?>
            <?= $form->textField($endereco, 'sgl_uf', array('size'=>2,'maxlength'=>2, 'value'=>'MG')); ?>
            <?= $form->error($endereco,     'sgl_uf'); ?>
	</div>

	<div class="row">
            <?= $form->labelEx($endereco,   'CEP'); ?>
            <?= $form->textField($endereco, 'nme_cep', array('size'=>15,'maxlength'=>15)); ?>
            <?= $form->error($endereco,     'nme_cep'); ?>
	</div>

        <!-- Dados da tabela cadastro -->

	<div class="row">
            <?= $form->labelEx($model,      'Data cadastro'); ?>
            <?= $form->textField($model,    'dat_data', array('size'=>10,'maxlength'=>10)); ?>
            <?= $form->error($model,        'dat_data'); ?>
	</div>


         <!-- Dados da tabela Home page -->


	<div class="row">
            <?= $form->labelEx($home,      'Site'); ?>
            <?= $form->textField($home,    'nme_site', array('size'=>45,'maxlength'=>45)); ?>
            <?= $form->error($home,        'nme_site'); ?>
	</div>

	<div class="row buttons">
            <?= CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->



E mais ou menos isso, ta quase no caminho!

Vamos depurar por parte!

1º Habilita o validação em Ajax do Formulário.
ControllerCadastro.php, descomenta essa linha.
$this->performAjaxValidation($model);

views/cadastro/index.php, alterere para true
'enableAjaxValidation'=>true,


Agora no formulário e o seguinte, tu tem que manter o mesmo nome do atributo do banco de dados,
só que ae tem 2 macetes para você mudar o nome:
model/Empresa.php
public function attributeLabels() {
        return array(
            'nme_fantasia' => 'Nome Fantasia',
            'nme_razao_social' => htmlentities('Razão Social'),
...
        );
    }

Observa que eu coloquei o htmlentities(), para pode funcionar os acentos e cedilhas(ç).
Nos attributeLabels() que você define os nomes para cada atributo, por padrão eles vem o que está no banco de dados.

Agora no formulário tu mantem os atributos:
<div class="row">
            <?= $form->labelEx($empresa,    'nme_fantasia');?>
            <?= $form->textField($empresa,  'nme_fantasia', array('size'=>45,'maxlength'=>45));?>
            <?= $form->error($empresa,      'nme_fantasia');?>
        </div>


Usa o Firebug, para debugar se está validando!
Vai testando ae!

Obs.: Para usar o data atual, não precisa do <input hidden>, dentro do actionCreate(), faz assim $_POST['Cadastro']['dat_data'] = date('Y-m-d H:i:s');
Muda de VARCHAR(45) para DATETIME.
Newerton Vargas de Araújo
0

#11 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 27 September 2010 - 07:34 AM

Olá... :rolleyes:

Bom, consegui mudar o nome dos campos dentro dos model como descrito acima,
criei a variável dentro CadastroController para receber a data atual, até ai tudo está indo conforme foi passado...

Dentro de views/cadastro/index.php, vc pediu pra alterar para true
'enableAjaxValidation'=>true,

Porém no meu index não tem esse trecho pra ser alterado, veja:

<?php
$this->breadcrumbs=array(
	'Cadastros',
);

$this->menu=array(
	array('label'   =>'Create Cadastro', 'url'=>array('create')),
	array('label'   =>'Manage Cadastro', 'url'=>array('admin')),
);
?>

<h1>Cadastros</h1>

<?php $this->widget('zii.widgets.CListView', array(
	'dataProvider'  =>$dataProvider,
	'itemView'      =>'_view',
)); ?>


Dai o formulário está validando os campos da tabela cadastro, mas os demais campos da empresa, endereco, home não estão sendo validados

Dentro do actionCreate do CadastroController eu tentei fazer essa alteração pra ver se as demais validação iria funcionar, mas não deu certo.

		// Descomente a seguinte linha se a validação AJAX é necessário
		$this->performAjaxValidation($model);
                $this->performAjaxValidation($empresa); // Criado por mim
                $this->performAjaxValidation($endereco); // Criado por mim
                $this->performAjaxValidation($home); // Criado por mim

Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#12 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 27 September 2010 - 09:47 AM

View Postkayzen, on 27 September 2010 - 07:34 AM, said:

Olá... :rolleyes:

Bom, consegui mudar o nome dos campos dentro dos model como descrito acima,
criei a variável dentro CadastroController para receber a data atual, até ai tudo está indo conforme foi passado...

Dentro de views/cadastro/index.php, vc pediu pra alterar para true
'enableAjaxValidation'=>true,

Porém no meu index não tem esse trecho pra ser alterado, veja:

<?php
$this->breadcrumbs=array(
	'Cadastros',
);

$this->menu=array(
	array('label'   =>'Create Cadastro', 'url'=>array('create')),
	array('label'   =>'Manage Cadastro', 'url'=>array('admin')),
);
?>

<h1>Cadastros</h1>

<?php $this->widget('zii.widgets.CListView', array(
	'dataProvider'  =>$dataProvider,
	'itemView'      =>'_view',
)); ?>


Dai o formulário está validando os campos da tabela cadastro, mas os demais campos da empresa, endereco, home não estão sendo validados

Dentro do actionCreate do CadastroController eu tentei fazer essa alteração pra ver se as demais validação iria funcionar, mas não deu certo.

		// Descomente a seguinte linha se a validação AJAX é necessário
		$this->performAjaxValidation($model);
                $this->performAjaxValidation($empresa); // Criado por mim
                $this->performAjaxValidation($endereco); // Criado por mim
                $this->performAjaxValidation($home); // Criado por mim



O enableAjaxValidation'=>true, e no views/cadastro/_form.php.

Para validar os demais campos, usa $this->performAjaxValidation(array($model, $empresa, $endereco, $home));
Newerton Vargas de Araújo
0

#13 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 27 September 2010 - 11:10 AM

Eu fiz o que passou, porém a validação ainda continua apenas sobre os dados ta tabela cadastro, mas todos os demais campos estão marcados com '*'.

A mensagem da validação:

Please fix the following input errors:

* Empresa Idempresa cannot be blank.
* Endereco Idendereco cannot be blank.
* Home Idhome cannot be blank.


CadastroController.php

	public function actionCreate()
	{
		$model      = new Cadastro();
                $empresa    = new Empresa();
                $endereco   = new Endereco();
                $home       = new Home();
                $_POST['Cadastro']['dat_data'] = date('Y-m-d H:i:s');

		// Descomente a seguinte linha se a validacao for ajax for solicitada
                $this->performAjaxValidation(array($model, $empresa, $endereco, $home));

		if(isset($_POST['Cadastro']) && isset($_POST['Empresa']) && isset($_POST['Endereco']) && isset($_POST['Home']))
		{
                    $model->attributes      = $_POST['Cadastro'];
                    $empresa->attributes    = $_POST['Empresa'];
                    $endereco->attributes   = $_POST['Endereco'];
                    $home->attributes       = $_POST['Home'];

                    /*
                     * Validando os 4 models
                     */

                    if($model->validate() && $empresa->validate() && $endereco->validate() && $home->validate()){

                        if($model->save() && $empresa->save() && $endereco->save() && $home->save()){
                                $this->redirect(array('view','id'=>$model->idcadastro));
                        }

                    }

		}

		$this->render('create',array(
			'model'     => $model,
                        'empresa'   => $empresa,
                        'endereco'  => $endereco,
                        'home'      => $home
		));
	}

Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#14 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 27 September 2010 - 12:11 PM

View Postkayzen, on 27 September 2010 - 11:10 AM, said:

Eu fiz o que passou, porém a validação ainda continua apenas sobre os dados ta tabela cadastro, mas todos os demais campos estão marcados com '*'.

A mensagem da validação:

Please fix the following input errors:

* Empresa Idempresa cannot be blank.
* Endereco Idendereco cannot be blank.
* Home Idhome cannot be blank.


Sobre esse "'enableAjaxValidation'=>true", é uma validação inline, ele valida na hora que tiver preenchendo o formulário, se por acaso tu coloco o nme_empresa como 'required' no Model/Empresa.php, ele será validado.

Sobre esses erros é o seguinte, esses ID não pode ser vazio, por que esse campos não é autoincremento no banco de dados, mesmo se você tirar esse do 'required', do Model ele vai dar erro no banco.

Tu 2 situações para solucionar:
1. Coloca o idempresa, idendereco, idhome como auto-increment no banco de dados.
2. Ou buscar o valor max() dessa tabela, e acrescentar +1, fazer de forma manual.

Ai vai do seu critério.
Newerton Vargas de Araújo
0

#15 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 27 September 2010 - 02:43 PM

A validação de forma manual a medida que se vai preenchendo o formulário, está funcionando.. :P
Parece que ele não valida na hora que se submit o formulário...

Agora sobre o campo idempresa, idenderedo e idhome eu não posso usar max() por que na verdade o que tenho que passar são as IDs, se na hora que eu obtiver o número da próxima ID a ser gerada e uma outra pessoa no mesmo instante fizer um cadastro em outro pc, ambos preenchendo o mesmo formulário ao mesmo tempo, mas com dados diferentes, vai dar erro, considerando que nas cardinalidades possa apenas ter uma empresa, um home(site), um endereço únicos pra cada cadastro...

E também tem a possibilidades das ids estarem quebradas, tipo.. IDs existentes no banco(1,2,5,10,22,23,24,25,26,30) se eu desse o max() ele retornaria 10 dai eu acrescentaria mais +1 = (10+1) = 11, 11 seria o próximo registro, sendo que na verdade, se ninguém fizer um cadastro antes de mim, ele vai ser 31.

Auto-increment no banco também não daria certo, por que ele vai estar sempre visando que os dados no banco nunca vai ser deletado e que a próxima id gerada em relação a que ele possui sempre ser +1, mas esquecemos que nem todos os dados nas tabelas empresa, endereco e home, vai ser utilizadas pela tabela cadastro....

Sem usar framework, na verdade nem uso framework ainda :P

Faria o seguinte código na hora de fazer a inserção no banco de dados, exemplo:

 require_once 'Classe/autoLoad.php';

/*
 * Cadastrando os dados do endereco e recuperando a id gerada
 */

 $objEndereco                    = new ControleEndereco();
 $objEndereco                    = $objEndereco->inserir($_POST);

 $objBanco                       = new ControleBanco();
 $objBanco                       = $objBanco->buscarId();
 $_POST['idendereco']            = $objBanco->__get('idregistro');
 $_POST['endereco_idendereco']   = $objBanco->__get('idregistro');

/*
 * Cadastrando os dados da empresa e recuperando a id gerada
 */

 $objEmpresa                     = new ControleEmpresa();
 $objEmpresa                     = $objEmpresa->inserir($_POST);

 $objBanco                       = new ControleBanco();
 $objBanco                       = $objBanco->buscarId();
 $_POST['idempresa']             = $objBanco->__get('idregistro');
 $_POST['empresa_idempresa']     = $objBanco->__get('idregistro');
        
/*
 * Cadastrando o site e recuperando a id gerada
 */

 $objHome                        = new ControleHome();
 $objHome                        = $objHome->inserir($_POST);

 $objBanco                       = new ControleBanco();
 $objBanco                       = $objBanco->buscarId();
 $_POST['idhome']                = $objBanco->__get('idregistro');
 $_POST['home_idhome']           = $objBanco->__get('idregistro');
        
/*
 * Cadastrando os dados da tabela cadastro com as ids geradas acima 
 * e outros dados vindo do formulário
 */

 $objCadastro                     = new ControleCadastro();
 $retorno                         = $objCadastro->inserir($_POST);

 if($retorno == true){ 

    echo 'CADASTRADO COM SUCESSO';

 }else{

     echo 'ERRO AO CADASTRAR';

     /*
      * Se ouve algum erro ao finalizar o cadastro eu excluo todos os registros feitos até o momento
      */

     $objEndereco                 = new ControleEndereco();
     $objEndereco                 = $objEndereco->excluir($_POST);

     $objEmpresa                  = new ControleEmpresa();
     $objEmpresa                  = $objEmpresa->excluir($_POST);

     $objHome                     = new ControleHome();
     $objHome                     = $objHome->excluir($_POST);

 }        



Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#16 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 27 September 2010 - 05:52 PM

 

View Postkayzen, on 27 September 2010 - 02:43 PM, said:

Agora sobre o campo idempresa, idenderedo e idhome eu não posso usar max() por que na verdade o que tenho que passar são as IDs, se na hora que eu obtiver o número da próxima ID a ser gerada e uma outra pessoa no mesmo instante fizer um cadastro em outro pc, ambos preenchendo o mesmo formulário ao mesmo tempo, mas com dados diferentes, vai dar erro, considerando que nas cardinalidades possa apenas ter uma empresa, um home(site), um endereço únicos pra cada cadastro...

E também tem a possibilidades das ids estarem quebradas, tipo.. IDs existentes no banco(1,2,5,10,22,23,24,25,26,30) se eu desse o max() ele retornaria 10 dai eu acrescentaria mais +1 = (10+1) = 11, 11 seria o próximo registro, sendo que na verdade, se ninguém fizer um cadastro antes de mim, ele vai ser 31.

max vai ser igual a 30, count = 10 :) (Foi só pra ser chato mesmo, hehe)
Com o max vc tem esse problema mesmo .. parece um problema pequeno, mas já tive ese caso em várias apps que eu fiz. Mesmo se vc itvesse incluindo por SQL direto com o campo id=max() da sua tabela, isso tem chance de acontecer pq o max não garante.

View Postkayzen, on 27 September 2010 - 02:43 PM, said:

Auto-increment no banco também não daria certo, por que ele vai estar sempre visando que os dados no banco nunca vai ser deletado e que a próxima id gerada em relação a que ele possui sempre ser +1, mas esquecemos que nem todos os dados nas tabelas empresa, endereco e home, vai ser utilizadas pela tabela cadastro....
Sem usar framework, na verdade nem uso framework ainda :P

Faria o seguinte código na hora de fazer a inserção no banco de dados, exemplo:
...

Vc pode usar da mesma forma que vc mostrou.
No caso de usar autoincrement, vc pode cadastrar e recuperar com http://www.yiiframew...on#lastInsertID, usando assim:
 $model->save(); 
Yii::app()->db->lastInsertID

Every solution creates a problem.
twitter.com/nenhumnick
0

#17 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 28 September 2010 - 08:04 AM

:blink:
Olha, bom.. eu ainda não sei fazer absolutamente nada no framework a não ser o que o Newerton me passou até agora com estes posts....então até agora tudo que consegui fazer foi montar uma tela de cadastro pra atender minhas necessidades e agora... porém a validação não deixa o formulário ser submetido por causa das fks da tabela cadastro... essa é uma situação que vou ter que enfrentar toda hora, por mais simples que seja minha DER, vou ter sempre uma tabela que fará ligação de outras várias tabelas...

O que pega é montar a tela de cadastro e fazer isso funcionar, pois essa tela carrega dados de cadastro de outras tabelas..

Com tudo isso, o auto-increment não resolve.. eu teria que fazer exatamente igual postei o código de exemplo de uma programação em MVC... cadastrar os elementos das tabelas empresa, endereço e home(site), pegar suas ids... depois ir na tabela cadastro, cadastar essas id + data (data de cadastro (datetime)).

Mas antes de chegar ao ponto de cadastrar.. o form não consegue ser submetido, por essas fks da tabela cadastro, estarem sendo validadas e não poderem ser passadas em branco... :( Eu não faço a minima idéia do que fazer...
Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#18 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 28 September 2010 - 11:24 AM

View Postkayzen, on 28 September 2010 - 08:04 AM, said:

:blink:
Olha, bom.. eu ainda não sei fazer absolutamente nada no framework a não ser o que o Newerton me passou até agora com estes posts....então até agora tudo que consegui fazer foi montar uma tela de cadastro pra atender minhas necessidades e agora... porém a validação não deixa o formulário ser submetido por causa das fks da tabela cadastro... essa é uma situação que vou ter que enfrentar toda hora, por mais simples que seja minha DER, vou ter sempre uma tabela que fará ligação de outras várias tabelas...

O que pega é montar a tela de cadastro e fazer isso funcionar, pois essa tela carrega dados de cadastro de outras tabelas..

Com tudo isso, o auto-increment não resolve.. eu teria que fazer exatamente igual postei o código de exemplo de uma programação em MVC... cadastrar os elementos das tabelas empresa, endereço e home(site), pegar suas ids... depois ir na tabela cadastro, cadastar essas id + data (data de cadastro (datetime)).

Mas antes de chegar ao ponto de cadastrar.. o form não consegue ser submetido, por essas fks da tabela cadastro, estarem sendo validadas e não poderem ser passadas em branco... :( Eu não faço a minima idéia do que fazer...


Kayzen,

Me passa a ordem de cadastro, que vou montar como que deve ser feito, só que como você não usa 'autoincremento', como vai estipular as ID para empresa, endereco e site?
Newerton Vargas de Araújo
0

#19 User is offline   Tayron Miranda 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 22-September 10
  • Location:Contagem, Minas Gerais

Posted 28 September 2010 - 11:57 AM

As ids para empresa, endereco e site dentro de suas respectivas tabelas são auto incremento.
Acho que fiz confusão com esse auto incremento... rsrsr

Bom a ordem do cadastro é o seguinte:

1º Cadastro os dados do:
- empresa dentro da tabela empresa
- endereço dentro da tabela endereço
- site dentro da tabela home

2º Cadastro dentro da tabela Cadastro os dados:
- data do cadastro
- idempresa
- idendereco
- idhome

FIM....
Tayron Miranda
www.tayron.com.br
www.vagacolaborativa.com.br - Site de emprego na área de TI
0

#20 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 28 September 2010 - 06:13 PM

Kayzen,

Seguindo essa ordem vou dar um exemplo de como tem que fazer!
Primeiramente verifica nos Models de cada item, Empresa, Endereco e Home.

public function rules() {
        return array(
            array('id', 'required'),
    }


Onde esta esse 'id', verifica se nesse array tem o idempresa, idendereco e idhome, e retira ele desse array('required').

Por que isso? Por que todos esses campos vão ser validado na hora de inserir no banco de dados, você removendo, ele não será validado, no $var->validate()

Agora no CadastroController faz mais ou menos isso.
if(isset($_POST['Cadastro']) && isset($_POST['Empresa']) && isset($_POST['Endereco']) && isset($_POST['Home']))
                {
                    $model->attributes      = $_POST['Cadastro'];
                    $empresa->attributes    = $_POST['Empresa'];
                    $endereco->attributes   = $_POST['Endereco'];
                    $home->attributes       = $_POST['Home'];

                    /*
                     * Validando os 4 models
                     */
                    if($model->validate() && $empresa->validate() && $endereco->validate() && $home->validate()){

			/*
			 * Salvar o Cadastro.
			*/
                        if($empresa->save()){
						
				/* Depois que foi salvo ele vai cair dentro dessa condição */
				/* Agora vamos salvar nos outros banco de dados */
				$idempresa = $model->idempresa;
								
				$endereco = new Endereco;
				$endereco->nmo_endereco = $_POST['Empresa']['nmo_endereco'];
				...
				$endereco->save(false);
				$idendereco = $endereco->idendereco;
								
				$home = new Home;
				$home->nmo_home = $_POST['Home']['nmo_home'];
				...
				$home->save(false);
				$idhome = $home->idhome;
								
				$cadastro = new Cadastro;
				$cadastro->data_cadastro = date('Y-m-d');
				$cadastro->idempresa = $idempresa;
				$cadastro->idendereco = $idendereco;
				$cadastro->idhome = $idhome;
				$cadastro->save(false);
																                $this->redirect(array('view','id'=>$model->idcadastro));
                        }

                    }

                }


Esse modo é so para você ter uma base de como tem que seguir as inserções, as vezes o Daniel ou outros tem um modo mais reduzido.
Newerton Vargas de Araújo
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users