У меня есть блейд-страница laravel с @foreach, как мне перенести блейд-код на страницу .vue?

У меня есть код на Blade Laravel, и он содержит @foreach. Как я могу перенести этот код блейда в .vue Inertia? Я пытался отправить свои данные в массив vue, но это плохая идея, или я идиот :(

Код index.blade.php:

<x-app-layout>
    <x-slot name = "header">
        <h2 class = "font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight">
            {{ __('Appl to staff') }}
        </h2>
    </x-slot>
    @if (Session::has('success'))
        <div class = "bg-lime-500 light:bg-lime-500 overflow-hidden shadow-sm sm:rounded-lg text-black text-center font-semibold">
            {{ Session::get('success') }}
        </div>
    @endif

    <div class = "py-12">
        <div class = "max-w-7xl mx-auto sm:px-6 lg:px-8">
            <div class = "bg-white dark:bg-gray-800 overflow-hidden shadow-sm sm:rounded-lg">
                <div class = "p-6 text-gray-900 dark:text-gray-100">
                    @foreach ($staff as $appl_to_staff)
                        <p>surname: {{ $appl_to_staff->surname}} </p>
                        <p>name: {{ $appl_to_staff->name}} </p>
                        <p>patronymic: {{ $appl_to_staff->patronymic}} </p>
                        <p>dob: {{ $appl_to_staff->dob}}</p>
                        <p><a class = "font-bold" href = "{{ route('staff.show', $appl_to_staff->id) }}">{{ __('More..') }}<a></p>
                        <br>
                    @endforeach
                </div>
            </div>
        </div>
    </div>
</x-app-layout>

Код index.vue:

<script setup>
import Welcome from '@/Components/Welcome.vue';
import AppLayout from '@/Layouts/AppLayout.vue';
import { Link } from '@inertiajs/vue3';

</script>

<template>
    <AppLayout title = "Staff">
        <template #header>
            <h2 class = "font-semibold text-xl text-gray-800 leading-tight">
                Staff
            </h2>
        </template>

        <div class = "py-12">
            <div class = "max-w-7xl mx-auto sm:px-6 lg:px-8">
                <div class = "bg-white overflow-hidden shadow-xl sm:rounded-lg">
                    <div class = "p-6 text-gray-900 dark:text-gray-100">
                        @foreach ($staff as $appl_to_staff)
                            <p>surname: {{ $appl_to_staff.surname}} </p>
                            <p>name: {{ $appl_to_staff.name}} </p>
                            <p>patronymic: {{ $appl_to_staff.patronymic}} </p>
                            <p>dob: {{ $appl_to_staff.dob}}</p>
                            <p><Link class = "font-bold text-blue-600" href = "{{ route('staff.show', $appl_to_staff->id) }}">{{ __('Подробнее..') }}</Link></p>
                            <br>
                        @endforeach
                    </div>
                </div>
            </div>
        </div>

    </AppLayout>
</template>

Контроллер

class StaffController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        $staff = Staff::all();
        return Inertia::render('Staff/Index', ['staff'=> $staff]);
    }

Index.vue при редактировании:

<script setup>
import Welcome from '@/Components/Welcome.vue';
import AppLayout from '@/Layouts/AppLayout.vue';
import { Link } from '@inertiajs/vue3';

</script>

<template>
    <AppLayout title = "Staff">
        <template #header>
            <h2 class = "font-semibold text-xl text-gray-800 leading-tight">
                Staff
            </h2>
        </template>

        <div class = "py-12">
            <div class = "max-w-7xl mx-auto sm:px-6 lg:px-8">
                <div class = "bg-white overflow-hidden shadow-xl sm:rounded-lg">
                    <div class = "p-6 text-gray-900 dark:text-gray-100">
                        <tr v-for = "appl_to_staff in staff">
                            <td>surname: {{ appl_to_staff.surname}} </td>
                            <td>name: {{ appl_to_staff.name}} </td>
                            <td>patronymic: {{ appl_to_staff.patronymic}} </td>
                            <td>dob: {{ appl_to_staff.dob}}</td>
                            <td><Link class = "font-bold text-blue-600" href = "{{ route('staff.show', $appl_to_staff->id) }}">{{ __('Подробнее..') }}</Link></td>
                            <br>
                        </tr>
                    </div>
                </div>
            </div>
        </div>

    </AppLayout>
</template>

Если вы хотите увидеть больше другого кода, напишите мне в комментариях, и я отправлю или отредактирую сообщение. Спасибо!

Ознакомьтесь с этой частью документации, чтобы узнать, как зациклиться на vuejs.

Joseph 25.02.2024 19:18

@Джозеф, я просматриваю документацию перед твоим комментарием, но, похоже, я глуп, потому что оттуда не понимаю, что такое foreach. Не могли бы вы уточнить для меня, пожалуйста?

Tim Hacks 25.02.2024 19:29

у них нет foreach в буквальном смысле, но оно позвонило v-for = "appl_to_staff in staff"

Joseph 25.02.2024 19:31

@Джозеф, я тестирую, но не работает :( может ошибка в контроллере?

Tim Hacks 25.02.2024 19:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо определить входящие реквизиты от контроллера в вашем коде Vue. Выглядеть это будет примерно так (ссылка)

<script setup>
import Welcome from '@/Components/Welcome.vue';
import AppLayout from '@/Layouts/AppLayout.vue';
import { Link } from '@inertiajs/vue3';

defineProps({ staff: Array })
</script>

Тогда приведенный выше код должен работать. Просто не забудьте также добавить ключ для цикла, чтобы он выглядел так (ссылка)

<tr v-for = "appl_to_staff in staff" :key = "appl_to_staff.id"></tr>

Спасибо! Я думаю, что я все сделал раньше, но моя <ссылка> будет плохой. Я починил это. Спасибо!

Tim Hacks 26.02.2024 06:02

Другие вопросы по теме

Похожие вопросы

Изменение правильного или неправильного значения поля в расширенном плагине настраиваемых полей и обновление всех сообщений
Curl: невозможно подключиться к прокси-серверу SOCKS5 на сервере
Как заставить переменную PHP «прилипать» к нескольким вызовам скрипта?
Вызов неопределенного метода App\Models\User::attachRole()
Структура постоянной ссылки продукта WooCommerce с использованием add_rewrite_rule() с родительской/дочерней/страницей
Разделить массив на сбалансированные фрагменты заданного минимального размера с меньшими фрагментами спереди и большими сзади
Неустранимая ошибка: невозможно повторно объявить spl_autoload_register() с помощью простого блога PHP
Mysqli_stmt::execute(): преждевременный EOF в метаданных поля результата
Проблема при передаче массива php в функцию js, содержащую пробел в элементах массива
Laravel красноречив, где состояние родителей/детей с 3-й моделью многие ко многим