Criação de Formulário com Itens

Boa noite Pessoa!!

Faz pouco tempo que estou estudando o Yii2 (já comecei pelo 2, nem fui apresentado ao 1 primeiro :D ).

Estou criando um sistema para uma oficina, onde possuo a Tabela de Clientes, Carros, Serviços e Peças.

Os cadastros de Clientes, Carros e Peças, criei diretamente pelo Gii, moleza.

O Cadastro de Serviço também criei pelo Gii, mas modifiquei algumas coisas par atender a minha necessidade e também está ok.

No Formulário de Serviços eu consigo buscar o carro e o clientes para cadastro do novo serviço( parto do principio que o cliente pode trocar de carro e levar um outro carro na oficina e também o carro pode ser levado a oficina por um outro cliente).

Bom mas até ai tudo bem, não tive maiores problemas.

Eu travei na parte onde preciso inserir, no Formulário de Serviço, as Peças que serão usadas para realização do serviço. O sistema se assemelha a um Carrinho de Compras, onde o usuário vai adicionando ao Serviço as peças que serão cadastradas.

[b]Seria Assim

[/b]

Serviço ID : 1

Cliente ID: 1 - Nome: João da Silva

Carro ID: 1 - Modelo: Saveiro - Placa: XXX-0000

[i]"Até em cima blz"

Ai em baixo preciso ir adicionando as peças, tava pensando em usar uma grid ou uma modal em javascript e ir adicionando as peças do serviço:[/i]

Peça ID-----Descrição------Valor----Qtde------Valor total


1-------------Vela-----------10------2---------20

5----------- Correia---------20------1---------20


                           Total do Serviço 40

É isso galera, se alguém tiver alguma informação de como fazer ficarei extremamente agradecido…

Abraços

Rafael.

Olá Rafael,

Sim você pode usar um Grid View acessando o Model das peças dos serviços, e pode usar formulários com dialogs Modal para fazer o CRUD e usar o PJAX para atualizar o grid após a alteração.

Segue um link com um tutorial de como usar o PJAX: http://blog.neattutorials.com/yii2-pjax-tutorial/

Fala Jaques!!!

Cara, muito Obrigado pela ajuda… O Pjax vai me ajudar muito…

A minha maior dificuldade está em usar a GridView. Não estou conseguido fazer o filtro para listar somente as peças cadastradas para o determinado serviço.

Tenho a tabela de servicos e o ID do serviço em $model->id e preciso fazer a comparação (where), com a Tabela de PeçasServiços, nessa tabela, tenho o atributo idServico.

Preciso comparar os dois e me retornar um dataProvider.

Já tentei de vairas formas:

searchModel->find()->where([‘idServico’ => 1])

                ->all();

$dataProvider = $searchModel->search([‘idServico’=>1]);

$dataProvider = PecasServicosSearch::findBySql(‘SELECT * FROM servicos’);

e todos dão o erro "Calling unknown method: yii\db\ActiveQuery::getCount()"

Se puder dar uma dica, ficarei muito agradecido

Ok, problema resolvido…

Erros de iniciantes :rolleyes:

// na view ei instanciei o Model PecasServicosSearch();

$searchModel = new app\models\PecasServicosSearch();

//Depois chamei o search do model passado como paramentro o IdServico

$dataProvider = $searchModel->searchPecasServicos($model->idServicos);

A grande mudança foi ter criando o metodo no PecasServicosSearch chamado searchPecasServicos.

Esse metodo eu adicionei alterando o metodo search já existente gerado pelo GII.

Alterei apenas a linha:

$query = PecasServicos::find();

para

$query = PecasServicos::find()->where([‘Servicos_idServicos’=>$params]);

Agora parece óbvio!

Espero que seja de ajuda para alguém que tenha o mesmo problema!

Bom, agora me surgiu um outro problema!

Estou na View Serviços, exibindo o dados do serviço.

Na minha url está assim .../servicos/view&id=3

No navegado exibo os dados do serviço do ID 3

Logo abaixo eu exibo por um GridView as peças adicionadas a esse serviço, como cite no primeiro post do fórum:

Peça ID-----Descrição------Valor----Qtde------Valor total


1-------------Vela-----------10------2---------20

5----------- Correia---------20------1---------20


A gridView possui os botões de View/Update/Delete na ultima coluna da GrirdView…

Preciso que, o botão delete remova o item da minha tabela PecasServicos, mas como estou na View Servicos, ele está tentando remover da Tabela de Serviços passando via url o código do produto

Minha duvida é: Como faço para alterar o controller/Action que está sendo acionado pelo botão delete da GridView?

Não sei se isso vai te ajudar mt, mas vc pode configurar algumas coisas no ActionColumn.


[

                'class' => 'yii\grid\ActionColumn',

                'header' => 'Ações',

                'headerOptions' => ['class' => 'col-sm-1 text-center'],

                'template' => '{view} {update} {delete}',

                'contentOptions' => ['class' => 'text-center'],

                'buttons' => [

                    'delete' => function ($url, $model) {

                        return Html::a('<span class="glyphicon glyphicon-trash text-danger"></span>', $url, [

                            'title' => 'Deletar',

                            'data-confirm' => 'Deseja excluir o item: ' . $model->MACROPROCESSO . '?',

                            'data-method' => 'POST'

                        ]);

                    }

                ],

            ],

No meu caso só usei para mudar a msg de confirmação da exclusão, mas acredito q de para mudar a URL tb