Campos ligados a banco
mad-dbunique-search-field
mad-dbmulti-search-field
mad-dbseek-field
Busca AJAX (DB)
mad-dbunique-search-field faz TomSelect com busca AJAX no servidor — pensado para listas grandes (aqui os 40 clientes da fixture).
resources/views/tutor/examples/db-busca/dbunique-search.blade.php
<mad-dbunique-search-field name="cliente_unique_id" label="Cliente"
model="TutorDemoCliente" database="business"
display="{nome} - {email}" order-by="nome"
min-length="2" placeholder="Buscar cliente..." />
Busca AJAX + auto-preenchimento
mad-dbunique-search-field também aceita <fill> filhas — selecionar o cliente preenche e-mail e UF sem round-trip extra do form.
E-mail (auto-preenchido)
—
UF (auto-preenchida)
—
resources/views/tutor/examples/db-busca/dbunique-search-fill.blade.php
<mad-form-grid :cols="2">
<mad-dbunique-search-field name="cliente_busca_fill_id" label="Cliente"
model="TutorDemoCliente" database="business"
display="{nome}" order-by="nome"
min-length="2" placeholder="Buscar cliente...">
<fill field="email_busca_preenchido" from="email" />
<fill field="uf_busca_preenchido" from="uf" transform="upper" />
</mad-dbunique-search-field>
<mad-display-field name="email_busca_preenchido" label="E-mail (auto-preenchido)" />
<mad-display-field name="uf_busca_preenchido" label="UF (auto-preenchida)" />
</mad-form-grid>
Multi-busca AJAX (DB)
mad-dbmulti-search-field em mode="comma" — chips com busca no servidor, ids salvos como CSV.
resources/views/tutor/examples/db-busca/dbmulti-search.blade.php
<mad-dbmulti-search-field name="categorias_tags" label="Categorias (tags)"
model="TutorDemoCategoria" database="business"
display="{nome}" order-by="nome" mode="comma" />
Seek field (modal)
mad-seek abre uma busca em modal (grid paginada, colunas + auto-fill com <mad-fill>) — é a tag declarativa recomendada; ela compila para mad-dbseek-field por baixo (mad-dbseek-field puro é "raramente usado direto", ver doc seek).
E-mail (preenchido)
—
Cidade (preenchida)
—
resources/views/tutor/examples/db-busca/dbseek.blade.php
<mad-seek model="TutorDemoCliente" name="cliente_seek_id" label="Cliente (busca em modal)" display="nome" database="business"
placeholder="Buscar cliente (abre modal)..." modal-title="Buscar cliente" modal-size="lg" per-page="10">
<mad-column field="id" label="Cód." width="70" sortable />
<mad-column field="nome" label="Nome" sortable />
<mad-column field="cidade" label="Cidade" />
<mad-column field="uf" label="UF" width="70" />
<mad-fill target="cliente_seek_email" source="email" />
<mad-fill target="cliente_seek_cidade" source="cidade" />
</mad-seek>
<mad-form-grid :cols="2">
<mad-display-field name="cliente_seek_email" label="E-mail (preenchido)" />
<mad-display-field name="cliente_seek_cidade" label="Cidade (preenchida)" />
</mad-form-grid>
Divergência entre mad_validate e o uso real
O lint (
mad_validate, regra R045) e o schema de mad_props para
mad-dbunique-search-field e mad-dbseek-field não reconhecem
model/database/display/order-by como props
válidas — mas skills/_cheats/f-select.cheat.md,
skills/_templates/crud-with-detail.md, skills/_cheats/detail.cheat.md,
skills/_templates/db-blocks-shares.md e skills/_data/INDEX.md usam
exatamente essas props de forma consistente (inclusive em templates de scaffold de produção).
Os exemplos desta página seguem essa evidência de uso real; o aviso do lint para estas duas
tags pode ser ignorado com segurança — reportado ao dono do catálogo para corrigir o schema.Código-fonte completo da página
app/control/Tutor/TutorDbBusca.php
<?php
namespace App\Control\Tutor;
use App\Support\Tutor\TutorPage;
class TutorDbBusca extends TutorPage
{
protected string $catalogKey = 'db_busca';
}
resources/views/tutor/db/busca.blade.php
<x-tutor-page page="db_busca">
<x-tutor-demo demo="tutor.examples.db-busca.dbunique-search"
title="Busca AJAX (DB)" desc="mad-dbunique-search-field faz TomSelect com busca AJAX no servidor — pensado para listas grandes (aqui os 40 clientes da fixture)." />
<x-tutor-demo demo="tutor.examples.db-busca.dbunique-search-fill"
title="Busca AJAX + auto-preenchimento" desc="mad-dbunique-search-field também aceita <fill> filhas — selecionar o cliente preenche e-mail e UF sem round-trip extra do form." />
<x-tutor-demo demo="tutor.examples.db-busca.dbmulti-search"
title="Multi-busca AJAX (DB)" desc="mad-dbmulti-search-field em mode="comma" — chips com busca no servidor, ids salvos como CSV." />
<x-tutor-demo demo="tutor.examples.db-busca.dbseek"
title="Seek field (modal)" desc="mad-seek abre uma busca em modal (grid paginada, colunas + auto-fill com <mad-fill>) — é a tag declarativa recomendada; ela compila para mad-dbseek-field por baixo (mad-dbseek-field puro é "raramente usado direto", ver doc seek)." />
<mad-callout type="info" title="Divergência entre mad_validate e o uso real" icon="info">
O lint (<code>mad_validate</code>, regra R045) e o schema de <code>mad_props</code> para
<code>mad-dbunique-search-field</code> e <code>mad-dbseek-field</code> não reconhecem
<code>model</code>/<code>database</code>/<code>display</code>/<code>order-by</code> como props
válidas — mas <code>skills/_cheats/f-select.cheat.md</code>,
<code>skills/_templates/crud-with-detail.md</code>, <code>skills/_cheats/detail.cheat.md</code>,
<code>skills/_templates/db-blocks-shares.md</code> e <code>skills/_data/INDEX.md</code> usam
exatamente essas props de forma consistente (inclusive em templates de scaffold de produção).
Os exemplos desta página seguem essa evidência de uso real; o aviso do lint para estas duas
tags pode ser ignorado com segurança — reportado ao dono do catálogo para corrigir o schema.
</mad-callout>
</x-tutor-page>