首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Laravel指令在我的项目中不起作用?

为什么Laravel指令在我的项目中不起作用?
EN

Stack Overflow用户
提问于 2022-06-29 09:47:07
回答 9查看 22.1K关注 0票数 16

我安装和配置了拉拉微风和刀片根据文档给出的拉拉。默认情况下,它使用Vite,但是@vite指令在我的项目中不起作用,我不知道我错过了什么。

tailwind.config.js

代码语言:javascript
复制
const defaultTheme = require('tailwindcss/defaultTheme');

/** @type {import('tailwindcss').Config} */
module.exports = {
    content: [
        './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
        './storage/framework/views/*.php',
        './resources/views/**/*.blade.php',
    ],

    theme: {
        extend: {
            fontFamily: {
                sans: ['Nunito', ...defaultTheme.fontFamily.sans],
            },
        },
    },

    plugins: [require('@tailwindcss/forms')],
};

vite.config.js

代码语言:javascript
复制
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel([
            'resources/css/app.css',
            'resources/js/app.js',
        ]),
    ]
});

vite正在正确编译我的js和css资产:

然后,我用@vite指令创建了一个测试刀片模板:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="csrf-token" content="{{ csrf_token() }}">

        <title>{{ config('app.name', 'Laravel') }}</title>

<!-- Fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">

<!-- Scripts -->
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body>
<div class="font-sans text-gray-900 antialiased">
    Hello World
</div>
</body>
</html>

我的测试路线:

代码语言:javascript
复制
Route::get('/nice', function () {
    return view('test');
});

下面的输出显示,@vite没有生成适当的脚本和链接资产标记:

我的开发环境是家园,我有拉拉混合在一起,因为我正在慢慢升级我们的前端到vite。我希望这里的人能帮我解决问题,谢谢你。

EN

回答 9

Stack Overflow用户

发布于 2022-07-04 09:08:24

Laravel 8文档中说,使用以下命令安装Laravel微风。

代码语言:javascript
复制
composer require laravel/breeze --dev

但这将安装最新版本的微风(^1.10)与Laravel 9 Vite支持。由于Laravel 8不支持Vite,您将不得不使用更老版本的Laravel微风。版本1.9.4适用于我与Laravel 8。

因此,尝试下面的命令来安装Laravel微风:

代码语言:javascript
复制
composer require laravel/breeze:1.9.4
票数 19
EN

Stack Overflow用户

发布于 2022-06-30 20:00:42

在使用命令升级框架版本之后,必须清除视图缓存:

代码语言:javascript
复制
php artisan view:clear

那么这个新的刀片指令必须正常工作。

票数 2
EN

Stack Overflow用户

发布于 2022-07-11 12:29:23

为了解决我自己的问题,我想出了一个解决你问题的办法!

一个新鲜的,开箱安装的微风利用了一堆组件.这些都可以在应用程序的resources/views/components文件夹中找到。默认情况下,Breeze还附带两个布局组件:

  • app/View/Components/AppLayout.php
  • app/View/Components/GuestLayout.php

这些布局组件的HTML结构可以在以下文件中找到:

  • resources/views/layouts/app.blade.php
  • resources/views/layouts/guest.blade.php

这些布局用于根据正在登录或不登录的用户包装被调用视图的内容。

在您的示例中,您尝试访问URL/nice,它返回test.blade.php视图。视图是在没有任何<html><body>或任何其他“包装”html标记的情况下呈现的,因为没有对任何布局的引用。

例如,假设您的test.blade.php只能由登录用户查看。尝试将test.blade.php文件更改为:

代码语言:javascript
复制
<x-app-layout>
    <x-slot name="header">
        <h2 class="font-semibold text-xl text-gray-800 leading-tight">
            {{ __('Test') }}
        </h2>
    </x-slot>

    <div class="font-sans text-gray-900 antialiased">
        Hello World
    </div>
</x-app-layout>

通过将内容包装在x-app-layout标记之间(对于来宾用户来说是x-guest-layout标记),您基本上可以说Laravel应该将test.blade.php的内容呈现到resources/views/layouts/app.blade.php文件的默认插槽中。

上面的示例代码还展示了如何从resources/views/layouts/app.blade.php内部填充test.blade.php插槽。<x-slot name="header">标记的内容放置在声明{{ $header }}的位置,就像集合从控制器传递到视图的方式一样。

在文档( find 这里)中,您可以找到组件如何在Laravel中工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72799267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档