[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
José Carlos dos Santos
Criador José Carlos dos Santos 24/11/2023

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
])
;
Manager Carlos Ferreira 24/11/2023

Olá, José! Tudo bem?

Compartilhe comigo um pouco mais do seu código, preciso de mais detalhes para conseguir te ajudar.

Carlos Ferreira
Criador José Carlos dos Santos 24/11/2023

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
})

 

José Carlos dos Santos
Manager Carlos Ferreira 24/11/2023

Qual o conteúdo de $supports dd($supports);

Carlos Ferreira
Criador José Carlos dos Santos 24/11/2023

Retorna isto: https://ibb.co/Jpg7CjY
Consegui paginar com uma gambiarra que fiz, porém o filtro é perdido quando faz a paginação.

 

José Carlos dos Santos
Criador José Carlos dos Santos 24/11/2023

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 }));

 

}

José Carlos dos Santos
Manager Carlos Ferreira 24/11/2023

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.

Carlos Ferreira
Criador José Carlos dos Santos 24/11/2023

É 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.

José Carlos dos Santos
Manager Carlos Ferreira 24/11/2023

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.

Carlos Ferreira
Criador José Carlos dos Santos 24/11/2023

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!

José Carlos dos Santos
Manager Carlos Ferreira 24/11/2023
Carlos Ferreira
Criador José Carlos dos Santos 24/11/2023

Deu sim, mas o problema é com vue. Ele se comporta diferente do blade. Por isso tive que fazer igual a cima. 

José Carlos dos Santos
Manager Carlos Ferreira 24/11/2023

Entendi amigo, sua abordagem ficou ok, só deixa em algum local que possa ser reaproveitado para evitar duplicação de código.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!