Problema com múltiplos models em um único formulário

28 views
Skip to first unread message

Jonatas Ferreira

unread,
Jan 26, 2016, 12:23:30 PM1/26/16
to YFB - Yii Framework Brasil
Olá pessoal.
Preciso utilizar dois models em um único formulário.

Deixe-me tentar explicar melhor....

Tenho uma tabela Agenda e uma Fiscalização. Uma fiscalização pode ter várias agendas, então foi gerada uma terceira tabela que armazena o ID da fiscalização e o ID da agenda (veja imagem abaixo)



Eu consegui na actionCreate, ou seja, ele salva tudo certinho na tabela agenda_fiscalizacao. Porém, não consigo no Update, pois não chega nem a carregar o formulário com os dados vindos do banco, gerando o seguinte erro:



Segue o código da actionUpdate:

OBS: Sei que o código dentro do IF está errado (na parte de salvar as agendas), mas o formulário nem carrega, ou seja, nem entra no IF.


public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $modelAgenda = AgendaFiscalizacao::findAll(['fiscalizacao_id' => $id]);

    if ($model->load(Yii::$app->request->post()) && Model::loadMultiple($modelAgenda, Yii::$app->request->post())) {
        $valid = $model->validate();
        $valid = Model::validateMultiple($agenda) && $valid;

        if ($valid) {
            $model->save(false);
            $modelAgenda->save(false);
            return $this->redirect(['view', 'id' => $model->id]);
        }
    }

    return $this->render('update', [
        'model' => $model,
        'modelAgenda' => $modelAgenda
    ]);
}


Meu formulário:


<?= $form->field($modelAgenda, 'agenda_id')->checkboxList(Agenda::combo(), ['class' => 'checkbox']) ?>
<?= $form->field($model, 'bioma_id')->dropDownList(Bioma::combo(), ['prompt' => $prompt]) ?>
<?= $form->field($model, 'nome')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'tipo_doc')->radioList(['CPF'=>'CPF', 'CNPJ'=>'CNPJ'], ['class' => 'radio']) ?>
<?= $form->field($model, 'n_doc')->widget(MaskedInput::className(), ['mask' => ['999.999.999-99', '99.999.999/9999-99']]) ?>
<?= $form->field($model, 'observacao')->textarea(['rows' => 7]) ?> 




Alguém sabe me dizer o que pode estar errado?
Obrigado.



Fábio Sales

unread,
Jan 26, 2016, 3:33:56 PM1/26/16
to yii-framew...@googlegroups.com
Jonatas,

Boa tarde,

O método findAll() retorna um array de models, que vc está passando para a view como se fosse um model só ($modelAgenda). Acredito ser esta a raiz do problema.

Atenciosamente,

Fábio Sales
Analista de tecnologia da informação
www.desenvolvemos.net

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/yii-framework-brasil/5f557e1a-f132-4631-99cf-a564bda2f745%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages