archtechx / laravel-pages
通过创建Markdown或Blade文件轻松添加路由到您的Laravel应用。
Requires
- php: ^8.2
- archtechx/laravel-seo: ^0.10
- illuminate/database: ^10.0|^11.0
- illuminate/routing: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- ryangjchandler/orbit: ^1.3
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
This package is auto-updated.
Last update: 2024-09-13 14:59:05 UTC
README
此包允许您使用Markdown或Blade创建页面,无需担心创建路由或控制器。
本质上,您创建 content/pages/foo.md
或 resources/views/pages/foo.blade.php
,页面将在 /foo
路由上可访问。
Markdown文件使用预定义的Blade视图进行渲染。Blade文件适用于不遵循默认布局且需要更多自定义样式的页面。
例如,您可以为 /pricing
路由使用Blade文件(pages/pricing.blade.php
),它有一个与定价副本相匹配的精美设计。
而对于 /about
,您可以使用简单的Markdown文件(content/pages/about.md
),使用纯文本描述您的服务,没有任何特殊图形元素。
我们在ArchTech网站上使用此功能——关于、职业和开源页面都是简单的Markdown文件。
安装
通过composer要求包
composer require archtechx/laravel-pages
发布配置文件
php artisan vendor:publish --tag=archtech-pages-config
最后,将此行添加到您的routes/web.php
文件的末尾
ArchTech\Pages\Page::routes();
此行将注册路由,以确保您的路由具有优先级,并且页面路由仅作为最后的选择使用。
重要:在尝试访问此包管理的URL之前,请确保您已将其配置为使用正确的布局(请参阅以下部分)。否则,您可能会收到一个错误,表明无法找到视图。
使用
Markdown页面
要创建Markdown文件,在content/pages/
中创建一个文件。页面的路由将与文件名匹配(不带.md
)。
例如,要创建/about
页面,创建content/pages/about.md
并包含以下内容
--- slug: about title: 'About us' updated_at: 2021-05-19T19:09:02+00:00 created_at: 2021-05-19T19:09:02+00:00 --- We are a web development agency that specializes in ...
Blade页面
要创建Blade页面,在resources/views/pages/
中创建一个文件。与Markdown示例一样,页面的路由将与文件名匹配(不带扩展名)。
因此,要创建/about
页面,您需要创建resources/views/pages/about.blade.php
<x-app-layout> This view can use any layouts or markup. </x-app-layout>
配置
您可能需要配置一些内容,最可能的是使用的布局。
为此,只需修改config/pages.php
。
配置文件允许您更改
- 使用的模型
- 使用的控制器
- Markdown视图使用的布局
- 渲染Markdown页面使用的视图文件
- 路由细节
布局是由供应商(提供的包)的Markdown视图使用的。您可能希望将其设置为类似app-layout
或layouts.app
的内容。
如果您想更改渲染Markdown本身的文件,创建resources/views/pages/_markdown.blade.php
(_
前缀很重要,因为它防止直接访问)并将配置键pages.views.markdown
更改为pages._markdown
。
如果您想比配置文件允许的更多自定义路由逻辑,只需自己注册路由即可(而不是调用Page::routes()
)
Route::get('/{page}', ArchTech\Pages\PageController::class);
生态系统支持
该软件包完美支持生态系统中其他工具,例如 Laravel Nova 或 Lean Admin。
例如,在 Laravel Nova 中,您可以创建一个用于软件包提供的 Page
模型(ArchTech\Pages\Page
)的资源,并使用以下字段模式
public function fields(Request $request) { return [ Text::make('slug'), Text::make('title'), Markdown::make('content'), ]; }
Git 集成 & Orbit
此软件包在底层使用 Orbit — 将 Markdown 文件作为 Eloquent 模型管理。如果您想自定义一些与该逻辑相关的功能,请查阅 Orbit 文档。
该软件包还使用了我们的另一个软件包,Laravel SEO,为 Markdown 页面提供元标签支持。我们建议您自己使用此软件包,因为它将使处理元标签变得和添加以下行到布局的 <head>
部分一样简单
<x-seo::meta />
受密码保护的路由
该软件包还允许您使用密码保护某些路由。要给页面添加密码,只需在 YAML 前置文件中指定 password
键
password: 'foo'
现在,如果用户想要访问该页面,他必须 必须 在 URL 中包含 ?password=foo
,否则将显示 403 错误。
- /about + /about?password=foo