Autocomplete com Cakephp 3 - jQuery UI, Ajax

10 views
Skip to first unread message

ebiagi

unread,
Jan 30, 2020, 6:29:47 PM1/30/20
to CakePHP Tuga
Amigos, estou tentando implementar no meu projeto um recurso autocomplete do tutorial a seguir: https://makitweb.com/jquery-ui-autocomplete-with-php-and-ajax/ (Makitweb)
Atende bem o que pretendo fazer aqui no meu projeto. Bem simples sua utilização! Você busca uma informação, ele trás a informação e completa outros campos vindo do banco.
Mais precisava de um direcionamento pra tentar rodar no cakephp, já que ele foi feito utilizando só o php, sem framework
Acontece que esse projeto é php e está da seguinte forma:

No arquivo do banco de dados abaixo eu sei que não seria preciso pois já estou conectando lá no config/app.php
Arquivo: config.php

<?php

$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = "tutorial"; /* Database name */

$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {
 die("Connection failed: " . mysqli_connect_error());
}


Esse arquivo abaixo que não entendo como faria pra implementar. Detalhe, essa consulta seria de uma tabela no banco diferente da que estou trabalhando. Preciso fazer uma consulta nessa tabela e trazer os campos para um Produtos/add.ctp. 
Arquivo: fetchData.php

<?php

include "config.php";

if(isset($_POST['search'])){
 $search = $_POST['search'];

 $query = "SELECT * FROM users WHERE name like'%".$search."%'";
 $result = mysqli_query($con,$query);

 $response = array();
 while($row = mysqli_fetch_array($result) ){
   $response[] = array("value"=>$row['id'],"label"=>$row['name']);
 }

 echo json_encode($response);
}

exit;


Agraço a colaboração. 
Minha dúvida seria só pra trazer a conexão com o banco e fazer rodar essa query.

André de P. Terceiro

unread,
Jan 30, 2020, 7:02:17 PM1/30/20
to cakep...@googlegroups.com
Vc não tem um model que conversa com o banco?

--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para ver este debate na Web, visite https://groups.google.com/d/msgid/cakephp-pt/a259b7d8-a9de-4390-b922-0aef2bc2d9c8%40googlegroups.com.

Edrian Biagi

unread,
Jan 30, 2020, 7:10:01 PM1/30/20
to cakep...@googlegroups.com
Na verdade o que acontece é o seguinte:
Eu tenho uma tabela com 5000 produtos cadastrados no banco. Acabei de importar de uma planilha. 

O usuário vai logar no sistema, vai na tela de adicionar produtos, na hora da buscar, ele vai selecionar dessa tabela que importei e vai trazer pra tabela de produtos. Aí o usuário vai poder salvar. 

Recebeu esta mensagem porque subscreveu um tópico no grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste tópico, visite https://groups.google.com/d/topic/cakephp-pt/-H0y0cIjfII/unsubscribe.
Para anular a subscrição deste grupo e de todos os seus tópicos, envie um email para cakephp-pt+...@googlegroups.com.
Para ver este debate na Web, visite https://groups.google.com/d/msgid/cakephp-pt/857142646.462348.1580428811764%40mail.yahoo.com.

Rafael Queiroz

unread,
Jan 31, 2020, 8:59:13 AM1/31/20
to cakep...@googlegroups.com
Olá,

O projeto é em CakePHP ? Não entendi porque uma conexão direta com o banco.



--
Best Regards,

Rafael F. Queiroz

Rafael Queiroz

unread,
Jan 31, 2020, 9:07:05 AM1/31/20
to cakep...@googlegroups.com
Olá,

O que você pode fazer:

1. Configurar a rota para a extensão json: https://book.cakephp.org/3/en/development/routing.html#configuring-route-options

Router::scope('/', function (RouteBuilder $routes) {
$routes->setExtensions(['json']);
$routes->fallbacks(DashedRoute::class);
});

2. Serializar os dados no controlador:

$this->set('_serialize', 'users');

Agora você vai conseguir acessar a rota /users.json, por exemplo.
Você vai precisar implementar o where com LIKE (a busca).

Edrian Biagi

unread,
Jan 31, 2020, 9:10:57 AM1/31/20
to cakep...@googlegroups.com
Oi Rafael, sim...
O projeto é em cake 3. Criei o model, controller dessa nova tabela. Acredito que seja melhor acessar via controller da tabela de produtos que é de onde preciso buscar, correto? 
Agora vendo como faço pra acessar essa outra tabela pelo controller Produtos. 

Rafael Queiroz

unread,
Jan 31, 2020, 2:13:22 PM1/31/20
to cakep...@googlegroups.com
Oi Edrian,

Não, você pode acessar via o conrtrolador da nova tabela. Users né isso ?

Reply all
Reply to author
Forward
0 new messages