Inserção de Dados

Amigos,

  Estou com outro grande problema em implemtações no Yii, gostaria de saber como posso fazer para resolver o seguinte:

Exemplo: Tenho um tabela com os campos:




CREATE  TABLE `producao` (

  `idproducao` INT NOT NULL AUTO_INCREMENT ,

  `data` DATE NOT NULL ,

  `funcionario` INT NOT NULL ,

  `artigo` INT(5) NOT NULL ,

  `producao` INT NOT NULL ,

  PRIMARY KEY (`idproducao`) ,

  INDEX `FK_funcionario` (`funcionario`) ,

  CONSTRAINT `FK_funcionario`

    FOREIGN KEY (`funcionario` )

    REFERENCES `funcionario` (`idfuncionario` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;



   Gostaria que quando estivesse efetuando um novo INSERT, o sistema salvasse para o banco e ficasse na tela do CREATE (_form), mas as informações de [b]data, artigo e funcionario [/b]já ficassem preenchidos com os dados da última digitação, porém ficasse disponível para trocá-los se necessário. Isso tudo porque um só funcionário é digitado em torno de 50 vezes na sequência no mesmo dia, fazendo isso só precisaria digitar os dados que fossem diferentes.

Alguém por favor pode me orientar como posso fazer?

Antecipadamente agradeço a todos pela ajuda.

Abços,

Adriano Silva

Adriano,

Você pode fazer assim





...

if($model->save()){

$this->redirect(array('create', 'data' => $model->data, 'artigo' => $model->artigo, 'funcionario' => $model->funcionario));

}

...



Ai você faz o tratamento no _form, pega por $_GET, e faz o tratamento, por exemplo:




if(isset($_GET['data']) && !empty($_GET['data'])){

$model->data = $_GET['data'];

}



Cara muito obrigado, rodou que uma beleza. Você me ajudou e muito

Abços,

Adriano Silva

Amigo,

É possível com isso, também fazer que ao adicionar, fique setado algum campo que deseja, como por exemplo produção. Como ficaria?

Sds,

Adriano Silva

Se for direto para o create não tem como, ha não ser que tenha isso guardado em session do cliente, ai cada cliente terá um ID da produção.

Amigos,

Criei um filter no admin assim:




            array(

                'name' => 'turno',

                'value' => '$data->turno',

                'filter' => array('A' => 'A', 'B' => 'B', 'C' => 'C', 'U' => 'U'),

            ),



É possível eu definir um default para esse filter, tipo:

  • Mostre como default os campos que tiver A, ou todos que for diferente de B. Levando em conta que o default e visualizar todos.

Agradeço,

Adriano Silva

Consegui resolver meu problema amigo, fiz com que ele setasse o campo que desejasse com ajax, usei o http://www.yiiframework.com/doc/api/1.1/CActiveForm e ficou assim:

No seu controller na function actionCreate é só descomenta a linha marcada abaixo




    public function actionCreate() {

        $model = new requisicao;


        // Uncomment the following line if AJAX validation is needed

         // $this->performAjaxValidation($model); <-- Descomente essa linha


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

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

            if ($model->save())

                $this->redirect(array('view', 'id' => $model->req_id));

        }


        $this->render('create', array(

            'model' => $model,

        ));

    } 



Na CActiveForm do _form ficou assim




    <?php  $form = $this->beginWidget('CActiveForm', array(

                'id' => 'requisicao-form',

                'enableAjaxValidation'=>true,

                'enableClientValidation'=>true,

                'focus' => array($model, 'req_saidaprev'),

            ));

    ?>



Pronto com isso e com o que você me ensinou consigo que sempre ele volte para o Create, retorne os valores que eu determinar e que fique setato o campo que desejar.

Agradeço novamente pela sua grande ajuda.

Adriano Silva