007santo 0 Denunciar post Postado Março 6, 2016 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
Gabriel Heming 766 Denunciar post Postado Março 6, 2016 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
007santo 0 Denunciar post Postado Março 7, 2016 O incrível é que meu professor do asolucoesweb no curso de Slim Framework usou o código como está e ele funcionou.... Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Março 7, 2016 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
007santo 0 Denunciar post Postado Março 7, 2016 O pega_pelo_id está correto ele usa php active record... public function pegar_pelo_id($id){ return \ActiveRecord\Model::find($id); } Compartilhar este post Link para o post Compartilhar em outros sites
007santo 0 Denunciar post Postado Março 9, 2016 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
Gabriel Heming 766 Denunciar post Postado Março 10, 2016 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