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

Class 'App\Controller\TableRegistry' not found

Boa noite pessoal, estou tendo um erro com o TableRegistry. Ao executar a página é mostrado o seguinte erro

Class 'App\Controller\TableRegistry' not found 

Error in: ROOT\src\Controller\ProdutosController.php, line 12

No entanto meu ProdutosController está assim:

<?php 

namespace App\Controller;

use App\Controller;

class ProdutosController extends AppController{

    public function index() {

    $produtosTable = TableRegistry::get('Produtos');
    $produtos = $produtosTable­>find('all');
    $this­>set('produtos',$produtos);
    }
}

Eu tentei algumas meios pra tentar solucionar mas não obtive sucesso. Este erro aparece mesmo copiando o código dado nos exercícios da aula. Alguém sabe o que pode ser?

4 respostas

Oi Leonardo, tudo bom?

Talvez esteja faltando o use indicando essa classe. Algo como:

<?php 

namespace App\Controller;

use App\Controller;
use Cake\ORM\TableRegistry;

class ProdutosController extends AppController{

    public function index() {

    $produtosTable = TableRegistry::get('Produtos');
    $produtos = $produtosTable­>find('all');
    $this­>set('produtos',$produtos);
    }
}

Assim o autoloader consegue carrega-la =)

Acho que esta faltando o ' - ' na chamado dos métodos.

Como esta :

$produtos = $produtosTable­>find('all');
    $this­>set('produtos',$produtos);

Como deveria estar :

$produtos = $produtosTable-­>find('all');
    $this­->set('produtos',$produtos);
solução!

Boa noite, muito obrigado pela ajuda pessoal. Eu refiz tudo acompanhando pelo vídeo. Comparando o código da minha primeira tentativa notei que minha declaração use estava errada. A solução foi definir corretamente este parâmetro.

use Cake\ORM\TableRegistry;

Entretanto notei que há outros erros na parte escrita da video aula. No arquivo index.cpt falta abrir e fechar a tag php. Lá está assim:

<table class=”table”>
    <thead>
        <tr>
            <th>Id</th>
            <th>Nome</th>
            <th>Preço</th>
            <th>Descrição</th>
        </tr>
    </thead>

    <tbody>
    <?php foreach($produtos as $produto) {
        <tr>
            <td><?= $produto['id']; ?></td>
            <td><?= $produto['nome']; ?></td>
            <td><?= $produto['preco']; ?></td>
            <td><?= $produto['descricao']; ?></td>
        </tr>
    } ?>
    </tbody>
</table>

Isso ocasiona o seguinte erro:

syntax error, unexpected '<'

Error in: ROOT\src\Template\Produtos\index.ctp, line 13

O código deveria estar assim:

<table class=”table”>
    <thead>
        <tr>
            <th>Id</th>
            <th>Nome</th>
            <th>Preço</th>
            <th>Descrição</th>
        </tr>
    </thead>

    <tbody>
    <?php foreach($produtos as $produto) {?>
        <tr>
            <td><?= $produto['id']; ?></td>
            <td><?= $produto['nome']; ?></td>
            <td><?= $produto['preco']; ?></td>
            <td><?= $produto['descricao']; ?></td>
        </tr>
   <?php } ?>
    </tbody>
</table>

Outro erro notado no código escrito está no arquivo ProdutosController, está faltando um - no $this->set e ocasiona o seguinte erro:

Call to undefined function App\Controller\set() 

Error in: ROOT\src\Controller\ProdutosController.php, line 13
public function index() {

    $produtosTable = TableRegistry::get(‘Produtos’);
    $produtos = $produtosTable­->find(‘all’);
    $this­>set(‘produtos’,$produtos);
}

Por gentileza, algum moderador poderia corrigir os erros apontados acima no código escrito na atividade 04 da aula 02.

Boa Leonardo!

Obrigado por compartilhar a solução com a gente aqui no forum. Vou indicar pra galera dar uma olhada nesse exercicio.

Abraço