Skip to content

Extending Record and Type

Carlos Rodrigues edited this page Feb 2, 2018 · 1 revision

Especializando as classes para cada Cliente

  • DEFAULT_NAMESPACE - Define que a classe padrão a ser carregada é Cliente_Record, e não Record
namespace Cliente;

class Record extends \Jp7\Interadmin\Record {
	const DEFAULT_NAMESPACE = 'Cliente\\';
}
class Type extends \Jp7\Interadmin\Type {
	const DEFAULT_NAMESPACE = 'Cliente\\';
}

Especializando cada Tipo

  • ID_TIPO - Define o id_tipo padrão para a classe
namespace Cliente;

class Carro extends Record { // Cliente\Record, mesmo namespace
}
class CarroTipo extends Type {
    const ID_TIPO = 1234;
}

// Exemplo de uso, veja que não é necessário passar o id_tipo no construtor, 
// porque está definido na constante ID_TIPO
$carroTipo = new CarroTipo;
$carros = $carroTipo->records()->get(); // prefira usar Carro::all()

Mapeamento de campos do tipo special

Campos do tipo special não tem um id_tipo especificado, como aconteceria com um select.

  • Para que o campo special retorne um objeto ao invés de um valor é necessário que na tela de edição do Tipo seja alterado o campo de Normal para Por Registros, ou outra das opções disponíveis.
  • Para definir o tipo do campo (para poder fazer um join, ou para gerar um webservice, por exemplo) é necessário sobrescrever a função getCampoTipo()
namespace Cliente;

class CursoTipo extends Type {
	...
	public function getCampoTipo($campo) {
		if ($campo['tipo'] === 'special_2') {
			return new EscolaTipo;
		}
		return parent::getCampoTipo($campo);
	}
	...
}
Clone this wiki locally