Ir para conteúdo
Fórum Script Brasil
  • 0

Variável não Definida (Laravel)


Elisame Araújo

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • -1

Eu sempre esqueço de usar o comando use App/Model/Tabela; e o Laravel reclama que a tabela que uso na classe do Controller não está definida. 

O comando with é usado para chamar um relacionamento.

Esse é modelo de Model com relacionamento:

 

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class tbpedido extends Model {
    use HasFactory;
    public $timestamps=false;
    protected $table="tbpedido";
    protected $fillable=['ped','dia','vendido'];
    function details(){return $this->hasMany(tbpedido::class,'vendido','vendido');}
    function pessoas(){return $this->hasMany(tbpessoa::class,'codp','codp');}
}

Com esse Model, eu posso usar a tabela tbpedido, assim no Controller:

 

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\tbpedido;
use App\Models\tbsupervariavel;
use Auth;

class HistPedController extends Controller {
	Public Function historico (Request $request){
		if($request->input("ped")){
            $ped=$request->input("ped");
            tbsupervariavel::where('codsuper',Auth::id())->update(['ped'=>$ped]);
            return redirect('orcamento');}
}

Ou seja, o with é usado junto com uma tabela e não no comando do view. A pergunta é: de onde você tirou esses códigos?

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...