Eu vi que já havia outro questionamento igual, mas a solução descrita lá não funcionou para mim.
Em Model\Entity\Produto.php
<?php
namespace App\Model\Entity;
use Cake\ORM\Entity;
class Produto extends Entity{
public function calculaDesconto(){
return $this->preco * 0.9;
}
}
?>
em index.ctp
<table class="table">
<thead>
<tr>
<th>Id</th>
<th>Nome</th>
<th>Preço</th>
<th>Preço com Desconto</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<?php
foreach($produtos as $produto){
?>
<tr>
<td><?=$produto['id'];?></td>
<td><?=$produto['nome'];?></td>
<td><?= $this->Money->format($produto['preco']); ?></td>
<td><?= $this->Money->format($produto->calculaDesconto()); ?></td>
<td><?=$produto['descricao'];?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
echo $this->Html->Link('Novo Produto',['controller'=>'produtos','action'=>'novo']);
?>
e a ProdutosController.php
<?php
namespace 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);
}
public function Novo(){
$produtosTable = TableRegistry::get('Produtos');
$produto = $produtosTable->newEntity();
$this->set('produto',$produto);
}
}
?>
Estou com a versão 3.7.3 Red Velvet do cake