3
respostas

[DÚVIDA] PHP -> CODEIGNITER

Olá Bom Dia,

Meu controller:

<?php
    class Produtos extends CI_Controller{
        public function index(){
            $produtos = array();
            $bola = array("nome" => "Futebol", "descricao" => "Algo de Futeb", "preco" => 300);
            $hd = array("nome" => "Hd Externo", "descricao" => "Um hd grande", "preco" => 400);
            array_push($produtos, $bola, $hd);
            $dados = array("produtos" => $produtos);
            $this->load->view("produtos/index.php", $dados);
        }

    }
?>

Minha view:

<html lang="en">
    <body>
        <?= var_dump($produtos); ?>
    </body>
</html>

Código OK, consigo compreender, má tem uma parte dele que não consigo entender

$dados = array("produtos" => $produtos);

Para não dar erro de Undefined Variable $produtos, pq eu não posso colocar simplesmente.

$dados = $produtos;

ou algo assim? Não estou indicando que dados é a váriavel $produtos ? pq mesmo assim ele da Undefined Variable?

É tão confuso para mim que não consigo passar a dúvida aqui rs.

Dúvida besta mesmo, andei caçando na internet antes de vim aqui, más me confunde mais, o que eu estou vacilando na hora do raciocínio?

Espero ter conseguido explicar essa dúvida que eu acredito ser uma coisinha bem boba, más me embaralhou.

3 respostas

Oi Gustavo, tudo bom?

Segundo a propria documentação do codeigniter você pode sim passar sua variavel produtos, por exemplo, diretamente para sua view. Algo como:

<?php
    class Produtos extends CI_Controller{
        public function index(){
            $produtos = array();
            $bola = array("nome" => "Futebol", "descricao" => "Algo de Futeb", "preco" => 300);
            $hd = array("nome" => "Hd Externo", "descricao" => "Um hd grande", "preco" => 400);
            array_push($produtos, $bola, $hd);
            $this->load->view("produtos/index.php", $produtos);
        }

    }
?>

O que no seu caso faz bastante sentido né. Afinal, por enquanto, estamos passando apenas um array de de produtos dentro de um outro array que só guarda o primeiro. Na medida que você for precisando de mais dados na view, ai sim faz sentido criar o array dados =)

Espero ter solucionado sua duvida e bons estudos =)

Sim, foi o que pensei que fazia sentido, eu chego a colocar só o $produtos e me retorna esse erro

Produtos
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: produtos

Filename: produtos/index.php

Line Number: 10

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: produtos/index.php

Line Number: 10

É que não faz sentido para mim dar como undefined sendo que declarei rss, ou eu acho que declarei e to falando abobrinha? kkk Não consigo saber o que eu estou errando.

hmm... Provavelmente o Codeigniter está criando uma variavel para cada valor do seu array produtos.

Afinal, ele recebe como parametro o array dados com que você quiser dentro e disponibiliza isso pra você na view já nas variáveis!

Faz um teste, tenta acessar as variaveis $bola e $hd. Acredito que você conseguirá encontrá-las =)

Nesse caso, por uma restrição do proprio framework você vai ter que colocar seu array dentro de outro array mesmo. Assim você terá o array que você quer disponivel na view!

Aguardo retorno =)