Contextualization: The register method of the ProjectController.php class saves the project data to the database and then redirects to the page in the editing mode. Redirecting the page in edit mode requires the id of the project.
Problem: But after the project was saved, redirecting to the edit page caused the following error:
Trying to get property of non-object
Search: I already researched the error, but the proposed solutions did not solve the problem.
Method tag tag of the ProjectController.php class:
//Método para cadastrar os dados gerais do projeto
public function cadastro(Request $request, Projeto $projeto)
{
$novoProjeto = $projeto->salvar($request->all());
return redirect()->route('projeto.edita', $novoProjeto->id);
}
Save method class of the Project.php class :
public function salvar(array $data)
{
$this->tipo_processo = $data['tipoProcesso'];
$this->processo = $data['numProcesso'];
$this->dt_protocolo = $data['dtProtocolo'];
$this->setor_origem_id = $data['setor'];
$this->proponente_id = $data['proponente'];
$this->nome_projeto = $data['nomeProjeto'];
$this->dt_inicio = $data['dtInicio'];
$this->dt_fim = $data['dtFim'];
$this->dias_intercalados = $data['diasIntercalados'];
$this->tipo_projeto_id = $data['tipoProjeto'];
$this->modalidade_apoio_id = $data['modalidadeApoio'];
$this->localidade_id = $data['localidade'];
$this->valor_solicitado = $data['vlSolicitado'];
$this->arquivo_fisico = $data['arquivo'];
// Use a classe de Carbon ao invés disso, e trabalhe com Mutators
$this->dt_lancamento = new DateTime();
$this->dt_lancamento->format('d-m-Y H:i:s');
$this->dt_alteracao = null;
$this->usu_lancamento_id = Auth::user()->id; //recebe o id do usuário logado
$this->usu_responsavel_id = Auth::user()->id; //recebe o id do usuário logado
return $this->save();
}
web.php project design route code:
//Gerenciar Projetos
$this->group(['middleware' => ['auth'], 'namespace' =>'admin','prefix'=>'projetos'], function(){
//Inicio das Rotas de gerenciar projetos
$this->post('cadastro','ProjetoController@cadastro')->name('projeto.cadastro');
$this->post('projeto','ProjetoController@consulta')->name('projeto.consulta');
$this->post('atualiza', 'ProjetoController@atualiza')->name('projeto.atualiza');
$this->post('remove','ProjetoController@remove')->name('projeto.remove');
$this->get('edita/{id}','ProjetoController@edita')->name('projeto.edita');
$this->get('novo','ProjetoController@novo')->name('projeto.novo');
$this->get('projeto','ProjetoController@index')->name('admin.projeto');
//Final das Rotas de gerenciar projetos
});