Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida com view e model

Bom dia, quando estou na view e puxo um dado da forma

{{$view->o_que_quero_pegar}}

eu estou buscando via atributo ou método get deste atributo? pois quando comecei a ver OO essa forma me dizia respeito em buscar via atributo com ele de visibilidade public

5 respostas

Opa Ricardo, tem como mandar o código do controller para dar uma olhada em como você está passando essa variável?

Abraços.

A pergunta é baseada exatamente como no curso daqui, após fazer um model e fazer um extends da classe pai Model, faço um

$variavelQualquer =  MinhaClasse::all()

Logo após envio essa variavel para a view com o comando

return view('minha_view)->with('variavel',$variavelQualquer);

assim na view por exemplo ao acessar o dado que vem desta classe no curso faz-se um

` $variavel->metodo/atributo A questão é, neste ponto, ele puxa de um Atributo vindo da classe mesmo sem estar definido? ou de um método get herdado na herança?

Opa Ricardo, para acessar qualquer método/atributo ele precisa existir... Logo se não está na classe ele tem que ter herdado de algum lugar para funcionar, sobre acessar o atributo direto para manter o encapsulamento seria legal você deixar o atributo privado e utilizar um getter. O que pode acontecer também é o magic method __get estar definido na classe o que evitaria o erro ao acessar alguém privado.

Abraços.

Fiz um exemplo correndo aqui para ilustrar melhor minha dúvida, abaixo os códigos.

Arquivo de rotas com a parte que quero mostrar mesmo

Route::get('/produtos', 'ProdutoController@listaProdutos');

Controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Produto;

class ProdutoController extends Controller{

    public function listaProdutos(){
        $produtos = Produto::all();
        return view('produto')->with('produtos',$produtos);
    }

}

Model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Produto extends Model
{
    //
}

View

<?php 
    foreach ($produtos as $p) {
        echo "Nome : ".$p->nome."---Descrição: ".$p->descricao."<br>";
    }
 ?>

como pode ver no meu model está vazio e mesmo assim ao fazer $p pegando um indice da array de objetos que vem da busca do controller eu consigo acessar, queria saber se isto é um atributo (o que eu acho que é) ou um método get herdado da classe pai Model.

solução!

O seu modelo é um espelho da sua base de dados, oque o laravel faz e refletir oque esta lá no seu modelo. Quando vc faz uma query e seu modelo esta vazio ele vai trazer todos os campos de lá, para perceber isso melhor vc pode tentar botar um campo que não esta no seu banco que ele vai te trazer nada. Se vc quiser entender mais como ele faz isso você pode entrar dentro da class que ele extende