Jump to content
Fórum Script Brasil
  • 0

Variável não Definida (Laravel)


Elisame Araújo

Question

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
Share on other sites

1 answer to this question

Recommended Posts

  • -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?

Edited by Frank K Hosaka
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.7k
×
×
  • Create New...