Jump to content

Variável não Definida (Laravel)


ElisameAraujo

Postagens Recomendadas

Já tem algumas horas que eu estou batendo cabeça nessa situação, e não consegui...

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>
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
        </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 é estendida 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

 

Link to comment
Compartilhe em outros sites

16 horas atrás, Marcos Roberto Artimundo disse:

Ola...tudo bem...dei uma olhada em seu código...

Na Models de Afiliados, vc fez igual ao Models de ProdutoCategorias?

Screenshot_2.png

No caso eu resolvi o problema adicionando uma função a rota da seguinte forma:

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

Só que, eu queria fazer isso usando Model e Controller como fiz para os produtos, da seguinte forma:

public function todosProdutos(){
        $produtos = DB::table('produtos as p')
            ->join('categoriaprodutos as catp','p.categoriaProdutoID','=','catp.categoriaProdutoID');
        $produtos = $produtos->get();
        return view('produtos.todos.index',['produtos'=> $produtos]);
    }

Porém quando uso essa estrutura, o Laravel passa a não reconhecer as variáveis.

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...