Italo Rodrigo
Italo Rodrigo

Reputation: 1785

Function call other function

I have a function in my Controller that call my blade:

public function detalhe(Request $request){
    //pega o ID da marcação
    $id = $request['id'];
    $marcacao = Marcacao::find($id);

    //prepara a receita pra ser criada
    $dadosReceita['marcacao_id'] = $id;
    $dadosReceita['codigo'] = $marcacao->id . $marcacao->cidadao_id . $marcacao->agenda_id;
    //consulta a receita
    $receita = Receita::where('marcacao_id', $id)->first();
    //verifica se existe a receita / cria a receita
    if (count($receita) > 0){
        $receitas_id = $receita['id'];    
    }else{
        $receita = Receita::create($dadosReceita);
        $receitas_id = $receita['id'];
    }
    //pega a lista dos produtos da receita
    $produtoReceitas = ProdutoReceita::where('receitas_id', $receitas_id)->get();

    //prepara o prontuario pra ser criado
    $dadosProntuario['marcacao_id'] = $id;
    //consulta o prontuario
    $prontuario = Prontuario::where('marcacao_id', $id)->first();
    //verifica se existe o prontuario / cria o prontuario
    if (count($prontuario) > 0){
        $prontuario_id = $prontuario['id'];    
    }else{
        $prontuario = Prontuario::create($dadosProntuario);
        $prontuario_id = $prontuario['id'];
    }
    //pega a lista dos ciaps do prontuario
    $ciapProntuarios = CiapProntuario::where('prontuario_id', $prontuario_id)->get();

    //pega a lista de produtos da undade
    $produtos = ProdutoUnidade::where('unidade_id', 2)
                              ->get();

    $vencimento = new DateTime(date("y-m-d"));
    $vencimento->add(new DateInterval('P90D'));
    $vencimento = $vencimento->format('y-m-d');

    $ciaps = Ciap::where('sexo', $marcacao->cidadao->sexo)
                 ->orWhere('sexo', 'A')
                 ->get();

    return view('agendas.detalhe', compact('ciapsProntuario', 'marcacao', 'produtos', 'vencimento', 'ciaps', 'receitas_id', 'prontuario_id', 'produtoReceitas'));
}

This is very big. I have other function similar to the function above, but this have only three lines different.

I like to do the second function like below

public function two(){
    //other lines differente
    return detalhe(); //return my other function
}

When I put this code, I receive the error:

FatalErrorException

Call to undefined function App\Http\Controllers\detalhe()

Upvotes: 0

Views: 34

Answers (1)

Jaime Rojas
Jaime Rojas

Reputation: 559

You need to use $this.If it belongs to the same controller, call it using $this->detalhe(). Otherwise, use return redirect()->action('YourAction@YourController')

Upvotes: 3

Related Questions