Vários produtos em uma NF
Descrição Geral do Problema
Pessoal, desculpe se a dúvida parece besta, mas estou iniciando em Laravel e estou fazendo um sisteminha para controle de epi's, acontece que quando os relacionamentos são normais, consegui realizar sem problemas, mas por exemplo, na NF de entrada, eu gostaria de selecionar vários produtos, dentro da model de produto e de NF já tenho os relacionamentos, mas não sei como permitir seleciona-los e colocar suas quantidades e valores no create.blade, pesquisei algumas coisas no google, mas não encontrei uma solução plausível.
Agradeço os amigos desde já.
Abordagem
Você já tentou alguma solução, descreva aqui.
Atualização 1
O meu create.blade está assim: `@extends('app') @section('content')
Novo Recebimento
@if ($errors->any())
<ul class="alert alert-danger">
@foreach($errors->All() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
{!! Form::open(['route' => 'recebimento.store']) !!}
<div class="from-group">
{!! Form::label('quantidade', 'Quantidade: ') !!}
{!! Form::number('quantidade', null, ['class'=>'form-control']) !!}
</div>
<div class="from-group">
{!! Form::label('vlr_unitario', 'Valor Unitário: ') !!}
{!! Form::number('ca', null, ['class'=>'form-control']) !!}
</div>
<div class="from-group">
{!! Form::label('validade', 'Validade: ') !!}
{!! Form::date('validade', null, ['class'=>'form-control']) !!}
</div>
<div class="from-group">
{!! Form::label('estoque_min', 'Estoque Mínimo: ') !!}
{!! Form::number('estoque_min', null, ['class'=>'form-control']) !!}
</div>
<div class="from-group">
{!! Form::submit('Criar Recebimento', ['class'=>'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
</div>
@endsection`
Solução
Se o problema foi resolvido, adicione uma seção de solução como essa
Eu já fiz isso em Java com o Grails Framework, mas a ideia é a mesma. Procure por formulários mestre detalhe que você terá a resposta. O princípio básico é que os nomes dos campos precisarão vir em array. Ex.: <input type="text" name"quantidade[]"/>
@doug993 não consegui captar o que você precisa. Tenta exemplificar melhor.
roquesz eu preciso em um recebimento poder cadastrar vários produtos.
Exemplo, uma NF de entrada, mas com vários itens nela.
solracnet você não tem nenhum exemplo em Laravel para que eu possa me basear?
Lembrando que tenho que ver como inserir os dados no BD também.
Sendo ainda mais específico, gostaria que pudesse criar várias linhas, pegando o produto_id e outros parâmetros do recebimento como está no código acima.
Eu fiz para uma tela de permissões e para um único campo, mas a ideia é a mesma.
@forelse($permissions as $obj) <input type="checkbox" name="permissao_id[]" value="{{$obj->id}}"/> @empty em branco, sem campo @endforelse
No controller assim eu tenho um método para atualizar assim:
public function updatePermissions($id, Request $request) { $ids = $request->get("permission_id"); // isso aqui já te retorna um array com todos os valores vindos do html
$role->perms()->sync($ids); // isso aqui é por causa de um ManyToMany ou hasMany sei lá como você conhece relacionamento de muitos para muitos. kkkkkkk }
Só isso.
Certo, isso mesmo sendo FK? No meu caso eu puxo o produto_id de outra tabela...
@doug993 cria um input que recebe um array de quantidades ( <input type="text" name"quantidades[]"/> ) e no PHP faz um foreach para inserir os valores do array de quantidades recebidos. Isso é comum ocorrer em tabela ternária (NxN)
@doug993 tu vai colocar um hidden de name produto_id[] com o value do seu produto. quando submeter o formulário, você vai ter varios arrays com os id's dos produtos, quantidade, valor unitario, etc... ai vc trata pra fazer as inserções
Se você quiser agrupar os arrays por produto, é só fazer o seguinte: <input type="text" name"produto[PRODUTO_ID]['quantidade'][]"/> <input type="text" name"produto[PRODUTO_ID]['vlr_unitario'][]"/>
isso vai gerar uma matrix tipo essa:
Array(
[produto] => Array(
[1] => Array(
['quantidade'] => Array([0] => 1)
['vlr_unitario'] => Array([0] => 2,50)
)
[2] => Array(
['quantidade'] => Array([0] => 4)
['vlr_unitario'] => Array([0] => 8,90)
)
)
)