Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

007santo

Erro fatal to_array() passando um não objeto

Recommended Posts

Estou tendo um erro onde pares de nome-valor deveriam ser passados no formato json atravez do console quando clicasse em editar e ao mesmo tempo um formulário que esta numa div com display: none no css deveria aparecer atraves da função show() do javascript, o mesmo codigo já funcionou mas comigo quando clico em editar não aparece nada no console e tambem não aparece o formulario.

 

Vou passar o codigo todo....

em admin.php tenho:

$app->get('/admin/post/editar/:id', function($id) use($app){
	$post = new \app\models\posts();
	$postEncontrado = $post->pegar_pelo_id($id);
	
	echo $post->toJson($postEncontrado);
	
});

no mysql.php tenho:

public function toJson($returnedData){
		foreach ($returnedData as $data):
			array_push($this->dataArray, $data->to_array());
		endforeach;
		return json_encode($this->dataArray);

	}

no posts.php tenho:

<?php 

namespace app\models;

class posts{
	use \app\traits\mysql;
	private $table='tb_posts';
	
	public function __construct(){
		$this->tableModel();
	}
}

no posts.js tenho:

table_posts.on('click','#btn-editar', function(event){
		event.preventDefault();
		var id = $(this).attr('data-id');
		$.ajax({
			url: '/admin/post/editar/'+id,
			type: 'GET',
			dataType: 'json',
			success: function(data){
				form_atualizar_post.show();
				console.log(data);
				
				
			}
		})
	})

Ao clicar em editar tenho o seguinte erro no firebug:

<br />
<b>Fatal error</b>:  Call to a member function to_array() on a non-object in <b>C:\Users\Senador\MYDESK3
\xampp4\xampp4\htdocs\T\slimframework\app\traits\mysql.php</b> on line <b>32</b><br />

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é bem específico:

 

 

Call to a member function to_array() on a non-object

 

Está chamando a função to_array em um "não-objeto".

 

O problema está no PHP, por isso nada irá aparecer no console.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há muitas questões relacionadas, principalmente como é um retorno do banco de dados que é passado para o método toJson.

 

Deve validar os dados, verificar como estão sendo convertidos e como estão vindo do método $post->pegar_pelo_id($id);

Compartilhar este post


Link para o post
Compartilhar em outros sites

A resposta é que por o to_array pedir um objeto, ele precisa ser chamado por uma classe....

modifiquei o arquivo admin.php para:

$app->get('/admin/post/editar/:id', function($id) use($app){
	$post = new \app\models\posts();
	$postEncontrado = $post->pegar_pelo_id($id);
	
	echo json_encode($postEncontrado->to_array());
	
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Classe != Objeto

 

to_array não pede um Objeto (ele nem tem parâmetros), o erro é que o método estava sendo chamado em uma variável que não era um Objeto.

 

Método de classes são estáticos, métodos de objetos não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.