por Sândler

Usando controller sem model – Cakephp

maio 22, 2018 em CakePhp, Php por Sândler

Usando controller sem model - Cakephp

Para utilizar uma controller que não tenha vinculo com nenhum banco de dados (não precisa de MODEL), basta utilizar o comando $uses e setar como false.


class
MyController extends AppController{
var $uses =false
;

}

por Sândler

Comentário referencial no código, como FIXME TODO BUG ISSUE TODO como usar?

janeiro 17, 2018 em CakePhp, CodeIgniter, iGrape, Java, JavaScript, JQuery, Php, Spaguetti, WordPress por Sândler

Você viu isto em código. Isto pode ser chamado de code tags.

Estritamente é um comentário como outro qualquer. Ele pode ter um significado específico para alguma ferramenta. É comum IDEs ou pelo menos extensões deles terem alguma coisa que vasculham o código procurando comentários que começam com:

  • TODO: (“para fazer”) Alguém [eu] precisa arrumar isso urgente
  • FIXME: (“me conserte”) Tem um erro que precisa ser consertado aqui, mas funciona (TOFIX:)
  • HACK: (“gambi”) Não teve outro jeito de resolver pra cumprir o prazo, depois melhoro
  • XXX: (“atenção”) Alguns editores destacam comentários com isto como algo importante sem dar semântica específica
  • DONE: (“feito”) Avisar que o TODO está resolvido. Quando remover isto?
  • UNDONE: (“desfeito”) Precisei voltar ao original por alguma razão
  • ASAP: (“tão rápido quanto possível”) Precisa arrumar isso urgente
  • REMOVE: (“remova”) Esse código foi colocado só para testar algo e deve sumir
  • NOTE: (“anotação”) Só para informar que tem algo importante agora
  • BUG: (“falha”) Tem um bug conhecido aqui que precisa ser arrumado – especialização do FIXME – costuma ter um número de ticket associado
  • ISSUE: (“questão”) Há uma dúvida aqui se deve ser assim mesmo
  • ERROR: (“erro”) Tem um erro reproduzível aqui – especialização do FIXME
  • BROKEN: (“quebrado”) não vai pra frente mesmo, não adianta insistir – especialização do FIXME
  • GLITCH (“falha”) Algo estranho ocorre aqui em situação bem específica
  • REVIEW: (“revise”) Revise isso pra mim, usado onde se costuma fazer peer review
  • WTF: (“que p0rr@ é essa?”) Fizeram um besteira muito grande aqui

 

Exemplo de Utilização:

 

// TODO: alguma coisa escrita
código....

 

 

Referencehttps://pt.stackoverflow.com/questions/121245/todo-o-que-%C3%A9-qual-sua-utilidade-e-como-usar

por Sândler

Como utilizar método de outra controller em cakephp

janeiro 15, 2018 em CakePhp por Sândler

Como utilizar método de outra controller em cakephp

 

Para carregar outra controller ou fazer a chamada dela, vocÊ pode utlizar o requestAction.

Exemplo:

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'featured'),
    array('named' => array('limit' => 3))
);

 ou

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'featured'),
    array('named' => array('limit' => 3))
);

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'view'),
    array('pass' => array(5))
);

 

 

Outra forma é:

App::import(‘Controller’, ‘Posts’);
$post = new PostsController();
$post->myFunction();

 

Diferente de quando usamos o $this->loadModel(‘Posts’) que irá efetuar execuções para o banco de dados, como o “find” ou “save”.

 

 

Referência: https://book.cakephp.org/2.0/en/controllers.html
Referência: https://stackoverflow.com/questions/7902293/how-to-use-methods-from-other-controllers-in-cakephp

por Sândler

Banco de Dados Dinâmico e Multiplos em Cakephp

dezembro 7, 2017 em CakePhp, Php por Sândler

APLICAÇÃO NA CONFIG DATABASE

Os nomes dos bancos são definidos em:  /app/config/database.php

EXAMPLE Multibanco

public $pro = array(‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ’127.0.0.1′,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘db_pro’,
‘encoding’ => ‘latin1′);

public $test = array(‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ’127.0.0.1′,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘db_test’,
‘encoding’ => ‘latin1′);

function __construct()
 {
     $this->default = $this->pro;
     $localhost = explode( ':', $_SERVER['HTTP_HOST'] );
     $arrRequest = explode('/',$_SERVER['REQUEST_URI']);
     $nameController = ($localhost[0] == 'localhost')? $arrRequest[3] :$arrRequest[2];//PEGA CONTROLLER
     switch ($nameController) {
        case 'users':
        case 'profiles':
        case 'logs':
        case 'companies':
              $this->default = $this->pro;
        break;
        default:
              $this->default = $this->test; 
        break;
} 

 

 

 

APLICAÇÃO DA CONTROLLER OU MODEL

TESTE 1

So, inside your Model, you would use the useDbConfig Attribute:

classExampleextendsAppModel{public $useDbConfig ='test';}

Inside your Controller, simply use:

$this->ModelName->useDbConfig ='test';

Thats all.

TESTE 2

I would use Model::setDataSource() rather than just setting the database config var. This is because there are other possible changes that come with changing the datasource:

$this->Model->setDataSource('test');


Reference: https://book.cakephp.org/2.0/en/models/model-attributes.html



por Sândler

CAKEPHP – Criando conditions no paginate com outras tabelas

janeiro 11, 2016 em CakePhp, Php por Sândler

 

Montando um Paginate com conditions em todas as tabelas

$this->paginate = array(
‘fields’=>’Financeiro.*,Aluno.*,Usuario.*’,
‘conditions’ => $condition,
‘joins’=>array(
array( ‘table’ => ‘aluno’,
‘alias’ => ‘Aluno’,
‘type’ => ‘LEFT’,
‘conditions’ => array(‘Financeiro.aluno_id = Aluno.id’)
),
array( ‘table’ => ‘usuario’,
‘alias’ => ‘Usuario’,
‘type’ => ‘LEFT’,
‘conditions’ => array(‘Aluno.usuario_id = Usuario.id’)
)
),
// ‘contain’ => array(‘Aluno’ ,’Usuario’),
// ‘link’ => array(‘Financeiro’ => array(‘Aluno’ => ‘Usuario’)),
‘limit’ => 30,
‘order’ => array(‘id’ => ‘DESC’)
);

por Sândler

CakePHP – Criando Concat no find list

agosto 23, 2015 em CakePhp, Php por Sândler

Adicione na model:

public $virtualFields = array(‘nome_tipo‘ => ‘CONCAT(nome, ” (“, tipo,”)”)’);

 

Na controller faça a busca com o nome virtual que criou na modelo:

$tagsArr = $this->Tag->find(‘list’,array(‘fields’=>’nome_tipo‘, ‘recursive’=>-1));

por Sândler

Adicionando as colunas direto no find tanto para tabela, belongsTo ou hasMany com bindModel

abril 7, 2015 em CakePhp por Sândler

As perguntas mais comuns é como faço para restringir a quantidade de colunas que traz na minha busca de uma tabela específica.

Exemplo de Tabelas:

Pagina – id, nome, data_cadastro
Promocao – id, id_pagina, nome, valor, data_cadastro
PromocaoConteudo – id, id_promocao, conteudo, data_cadastro

 

Então quando buscar a promoção teremos:

belongsTo = ‘Pagina’;
hasMany = ‘PromocaoConteudo’;

 

Estes exemplos abaixo, imaginamos que as tabelas já estão vinculadas na Model.

 

Trazendo tudo de tudo:
$promocoes = $this->Promocao->find(‘all’);

 

Vamos imaginar que queira somente algumas colunas de cada tabela que esteja vinculada a Promoção.

$this->Promocao->bindModel(array(‘hasMany’=>array(‘PromocaoConteudo’=>array(‘fields’=>array(‘PromocaoConteudo.conteudo’)))));
$promocoes = $this->Promocao->find(‘all’, array(‘fields’=>array(‘Promocao.nome’,’Promocao.valor’,’Pagina.nome’)));

 

Veja que quando é um BelongsTo é possível colocar nos fields do próprio find da promoção, mas quando é um HasMany, é necessário colocar com o bind como se fosse fazer o vínculo novamente.

 

 

 

por Sândler

Debug Query Cakephp via Controller e View

março 10, 2015 em CakePhp por Sândler

Podemos fazer dois tipos de Debug das queries executadas:

 

Controller –  irá retornar um array  com todas as queries que estão rodando:
Exemplo 1:
$destinos = $this->Destino->find(‘all’);
$log = $this->Destino->getDataSource()->getLog(false, false);
debug($log);

 

View  - também exibirá as queries que estão rodando, mas com visual em tabela para separar melhor o conteúdo:
Exemplo 2:

<?php echo $this->element(‘sql_dump’);?>

por Sândler

Desvincular Foreignkey (fk) model cakephp (unbindmodel)

março 9, 2015 em CakePhp, Php por Sândler

Desvinculando Foreignkey (de uma model com a outra via “unbindModel”.

 

Imaginando que na sua model “USERS” você tenha um hasMany de outras duas models chamadas “PROFILES” e “CONTACTS”.

Tendo estas informações podemos concluir que quando eu fizer uma busca de um ou mais usuários ele trará as informações do perfil e do contato.

Exemplo 1: Todos contatos / todos perfis / todos contatos

$this->User->find(‘all’);

 

Exemplo 2: Todos contatos / nenhum perfis / nenhum  contatos

$this->User->find(‘all’, array(‘recursive’=> -1));

 

Exemplo 3: Todos contatosnenhum perfis / todos contatos
Dependendo do vínculo entre as tabelas, você poderá utilizar “hasMany” ou “belongsTo” dependendo da forma que foi criada seu banco de dados.

$this->User->unbindModel(array(‘hasMany’ => array(‘Profile’)));
ou
$this->User->unbindModel(array(‘belongsTo’ => array(‘Profile’)));

$this->User->find(‘all’);