Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Variável não Definida (Laravel)

Desde ontem que eu estou batendo cabeça nessa situação, e não consegui resolver de jeito nenhum...

Seguinte, tenho dois selects que serão preenchidos com opções do banco de dados, um de categoria e outro de afiliação:

adicionar-produto.blade.php

<div class="input-group mb-3">
        <label class="input-group-text" for="categoria">Categoria</label>
        <select class="form-select" id="categoria" data-parsley-required="true" name="categoriaProdutoID">
            <option disabled selected>Escolha uma...</option>
            @foreach ($categorias as $categoria)
                <option value="{{ $categoria->categoriaProdutoID }}">{{ $categoria->CategoriaProduto }}</option>
            @endforeach
        </select>
    </div>

    <div class="input-group mb-3">
        <label class="input-group-text" for="afiliacao">Afiliação</label>
        <select class="form-select" id="afiliacao" data-parsley-required="true" name="afiliacaoID">
            <option disabled selected>Escolha uma...</option>
            @foreach ($afiliados as $afiliado)
                <option value="{{ $afiliado->afiliacaoID }}">{{ $afiliado->nomeAfiliacao }}</option>
            @endforeach
        </select>
    </div>

No segundo eu já fiz ele para fazer a iteração, criei o controller e model, porém o Laravel me retorna com o erro de variável não definida. Já tentei fazer com ->with('afiliados', $afiliados), mas o Laravel diz que não existe essa variável. A situação tá assim:

AfiliadoController.php (Controller)

class AfiliadoController extends Controller
{
    public function todosAfiliados(){
        $afiliados = Afiliado::all();
        return view('produtos.adicionar')->with('afiliados', $afiliados);
    }
}

Afiliado.php (Model)

class Afiliado extends Model
{
    use HasFactory;
}

Nota: Eu tenho uma página chamada adicionar.blade.php e ela é extendida através de um @include('components/adicionar-produto'), onde lá está o formulário que vai receber o foreach, da seguinte forma...

  <section class="section">
            <div class="card">
                <div class="card-body">
                    <p class="text-subtitle text-muted">Nesta página você poderá um novo produto a listagem de produtos disponíveis no site.</p>
                    @include('components/adicionar-produto')
                </div>
            </div>
        </section>

A minha dúvida é, porque eu não consigo fazer com que o Laravel enxergue a variável mesmo passando ela com ->with()? Aqui está o github do projeto: https://github.com/ElisameAraujo/adminNaturezaCura

1 resposta
solução!

Eu corrigi parcialmente esse problema para as afiliações, mas agora empaquei para fazer o mesmo para as categorias.

Na rota relacionada a adicionar produto eu adicionei uma função:

Route::get('/novo-produto',function(){
        $afiliados = DB::table('afiliados')->get();
        return view('produtos.adicionar', compact('afiliados'));
    })->name('novo-produto');

Agora ele traz os registros realacionados, mas como eu faria para fazer o mesmo para as categorias, já que caio no mesmo problema da Undefined Variable?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade