Form for a different model

2

I'm using CakePHP 2.6.4.

I have two tables in the database: despesas and receitas . I have CRUD's methods of expenditure and revenue. I created the controller RelatoriosController for detailed expense and revenue reports, but I want to reuse validations in the model Despesa and Receita , in addition to callbacks ( afterFind , beforeFind , etc).

How do I do this?

My control Despesas is as follows:

Controller Expenses

<?php
public

function inserirDespesa()
{
 if ($this->request->isPost())
 {
  if ($this->Despesa->save($this->request->data))
  {
   $this->Session->setFlash("Despesa inserida");
   $this->redirect(array(
    'action' => 'inserirDespesa'
   ));
  }
  else
  {
   $this->Session->setFlash("Despesa não inserida");
  }
 }
}

public

function consultarDespesa()
{
 if ($this->request->is("post"))
 {
  $despesas = $this->Despesa->afterFind($this->Despesa->query("select despesas.id_despesa, despesas.despesa, despesas.valor_despesa, despesas.data_despesa, despesas.local_despesa, tipos.tipo from despesas inner join tipos on despesas.fk_id_tipo=tipos.id_tipo where year(data_despesa)='{$this->request->data['Despesa']['ano']}' and month(data_despesa)='{$this->request->data['Despesa']['mes']}'"));
  if ($despesas == null)
  {
   $this->Session->setFlash("Sua pesquisa não retornou nenhum resultado.");
  }
  else
  {
   $totalReceitas = $this->somarReceitasParaLiquido($this->request->data);
   $this->exibirDespesas($despesas, $totalReceitas);
  }
 }
}

Modal Expense:

<?php
class Despesa extends AppModel

{
 public $name = 'Despesa';

 public $useTable = 'despesas';

 public $primaryKey = 'id_despesa';

 public $validate = array(

  'despesa' => array(
   'rule' => array(
    'notEmpty',
    'message' => 'O campo despesa deve ser informado'
   )
  )
 );
 public

 function beforeSave($options = Array())
 {
  $this->data['Despesa']['valor_despesa'] = $this->valor($this->data['Despesa']['valor_despesa']);
  $this->data['Despesa']['data_despesa'] = $this->converterDataParaEN($this->data['Despesa']['data_despesa']);
  return true;
 }

 public

 function afterFind($despesas, $primary = false)
 {
  foreach($despesas as $despesa => $campo)
  {
   $despesas[$despesa]['Despesa']['valor_despesa'] = $this->valor($campo['Despesa']['valor_despesa']);
   $despesas[$despesa]['Despesa']['data_despesa'] = $this->converterDataParaPT($campo['Despesa']['data_despesa']);
  }

  return $despesas;
 }
}

?>

Insertion form:

<?php  
echo $this->Form->create('Despesa');  

echo $this->Form->input('despesa', array('label'=>'* Despesa:', 'maxlength'=>'30'));  

//campo valor_despesa do tipo texto para aceitar a "," (vírgula).  
echo $this->Form->input('valor_despesa', array('label'=>'* Valor (apenas números, incluindo os centavos. Coloque 00 quando não houver centavos):', 'maxlength'=>'10', 'type'=>'text', 'onkeypress'=>"mascara(this, valor)"));  

//data_despesa com type=text para possibilitar a digitação e o símbolo de "/".
echo $this->Form->input('data_despesa', array('label'=>'* Data:', 'type'=>'text', 'maxlength'=>'10', 'onkeypress'=>"mascara(this, data)" ));  

echo $this->Form->input('local_despesa', array('label'=>'Local da despesa', 'maxlength'=>'15'));  
echo $this->Form->input('fk_id_tipo', array('label'=>'Forma de pagamento:', 'type'=>'select', 'options'=>array('transacional'=>'Transacional', 'em espécie'=>'Em espécie')));  

//id do usuário para foreign key na despesa  
echo $this->Form->input('fk_id_user', array('value'=>$this->Session->read('Auth.User.id'), 'type'=>'hidden'));  

echo "<p>";  
echo $this->Form->submit('Inserir despesa');  
echo $this->Form->button('Limpar', array('type'=>'reset'));  
echo $this->Form->end();  

How do I make a form in another view that passes on the model and the controler expense? That is, in% view of%, when submitted, would pass in the model /relatorio/buscar.cpp to use the callbacks Despesa and return the result for afterFind .

Can anyone help me?

    
asked by anonymous 26.10.2017 / 20:23

0 answers