Como acessar esses dados usando o vue3?
Estou tentando acessar os dados atravez do vue, mas só consigo acessar os suportes assim $supports->items(). Mas dessa forma não vem com os dados padrão do paginate(). Os outros dados ficaram fora. Mas quando passo apenas 'supports' => $supports vem tudo, porém não consigo acessar na view de forma padrão.
return Inertia::render('Admin/Supports/Index', [
'supports' => $supports->items(),
'statusOptions'=> $statusOptions
]);
Olá, José! Tudo bem?
Compartilhe comigo um pouco mais do seu código, preciso de mais detalhes para conseguir te ajudar.
O código é igual ao do curos. Apenas estou usando o vue
A minha view estou fazendo o loop assim:
<tr v-for="support in supports" :key="support.id" class="hover:bg-gray-50"></tr>
Meu props
const props = defineProps({
supports: Object,
statusOptions: Object
})
Qual o conteúdo de $supports dd($supports);
Retorna isto: https://ibb.co/Jpg7CjY
Consegui paginar com uma gambiarra que fiz, porém o filtro é perdido quando faz a paginação.
Como estou fazendo para paginar atualmente:
<VueTailindPagination
:current="props.supports.currentPage"
:total="props.supports.total"
:per-page="props.supports.perPage"
@page-changed="$event => onPageClick($event)">
</VueTailindPagination>
Uso essa função para pazer a paginação:
const formPage = useForm({});
const onPageClick = (event) => {
formPage.get(route('admin.supports.index', { page:event }));
}
Esse componente VueTailwindPagination é um componente personalizado, ou é algum pacote que você instalou?
Precisa passar o filtro ao chamar o get, porque assim persiste o filtro.
É um pacote que instalei. Mas usando um exemplo que padrão. Usando o Suppors::paginate() posso acessar os dados atravéz do supports.data no vue e funciona certinho. O problema está em retorno da implemetação do Presenter. Tentei criar outro método:
public function links()
{
return $this->paginator->links();
}
Mesmo assim não consegui acessar com o vue. Quando tento ele torna um array vazio.
Desculpas demorar te responder, estava resolvendo alguns B.O.s aqui.
Entendi, é porque o presenter tem um padrão próprio de retorno, diferente do padrão do Laravel, como usou um package, ele está esperando os dados igual ao meta, o retorno padrão do paginate retorna as propriedades "data" e "meta", o meta é o que esse package usa, vc pode adaptar o links para ficar exatamente igual aos dados do meta, inclusive com o mesmo nome de propriedade.
Depois de muito quebra cabeça eu consegui desse modo:
$array = new \stdClass();
$array->data = $supports->links();
$ar = (object) $array->data->getData();
$array->getData = $ar;
$array->getLinks = $array->getData->paginator;
$array->setLinks = $array->getLinks;
$data = (object) $array->setLinks;
Caso você tenha uma solução mais simples eu ficaria muito grato!
Criando um presenter para os dados paginados, não deu certo? https://github.com/especializati/curso-laravel-9-dashboard-ead/blob/main/app/Repositories/Presenters/PaginationPresenter.php
Deu sim, mas o problema é com vue. Ele se comporta diferente do blade. Por isso tive que fazer igual a cima.
Entendi amigo, sua abordagem ficou ok, só deixa em algum local que possa ser reaproveitado para evitar duplicação de código.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!