Метод отображения Laravel + Next.jsPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Метод отображения Laravel + Next.js

Сообщение Anonymous »

Я знаю, что это нетрадиционное сочетание, но я использую Next.js и стек Laravel для своего приложения.

Код: Выделить всё

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class Blog extends Model
{
use HasFactory;

protected $guarded = [];

// This should work for route model binding
public function getRouteKeyName()
{
return 'slug';
}
api.php

Код: Выделить всё

Route::apiResource('/blogs',BlogController::class)->only(['index','show','store','destroy']);
Контроллер:

Код: Выделить всё

public function show(Blog $blog) // ← Change parameter name to match resource
{
return new BlogResource($blog);
}
page.tsx

Код: Выделить всё

import Image from "next/image";
async function getBlog(slug) {
const baseUrl = process.env.APP_URL ?? "http://127.0.0.1:8000";
const url = `${baseUrl}/api/blogs/${slug}`;

console.log('🔄 Fetching from URL:', url); // Debug 1

try {
const response = await fetch(url, {
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
cache: "no-store",
});

console.log('📡 Response status:', response.status); // Debug 2
console.log('📡 Response ok:', response.ok); // Debug 3

if (!response.ok) {
const errorText = await response.text();
console.error('❌ HTTP Error:', response.status, errorText);
throw new Error(`Failed to fetch blog: ${response.status} ${response.statusText}`);
}

const result = await response.json();
console.log('📦 Full API result:', result); // Debug 4
console.log('📦 Data property:', result.data); // Debug 5

return result.data;

} catch (error) {
console.error('💥 [getBlog] Fetch error:', error);
return null;
}
}

export default async function BlogPage({ params }) {
const { slug } = params;
const blog = await getBlog(slug);

if (!blog) {
return (

Blog not found

);
}

return (




{/* Blog Title */}

{blog.title}


{/* Blog Thumbnail */}
{blog.thumbnail && (

)}

{/* Blog Body */}


{/* Button */}


Request Quotation





);
}
Проблема в том, что он возвращает ошибку: Блог не найден. Когда я пытаюсь получить доступ к блогу из серверной части через localhost:8000, я могу получить к нему доступ. Только не фронтенд. Это говорит мне о том, что проблема связана с привязкой модели маршрута, поскольку я пытаюсь получить доступ к блогу через пул. Есть ли у кого-нибудь быстрые решения?

Подробнее здесь: https://stackoverflow.com/questions/798 ... how-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»