taeluf / phad
将html、sql和php集成到基于html的视图的框架
Requires
- taeluf/liaison: v0.6.x-dev
- taeluf/lildb: v0.1.x-dev
- taeluf/phtml: v0.1.x-dev
Requires (Dev)
- league/commonmark: ^1.0
- taeluf/code-scrawl: v0.8.x-dev
- taeluf/lildb: v0.1.x-dev
- taeluf/tester: v0.3.x-dev
Suggests
- league/commonmark: ^1.0 to use commonmark filter
This package is auto-updated.
Last update: 2024-09-08 04:13:28 UTC
README
Phad: Php Html Api Database
一种将HTML编译为与数据库相连的PHP的模板系统。
注意:虽然Phad功能丰富、健壮,并在多个生产网站上使用,但它尚未准备好用于主流使用。部分代码库设计非常糟糕,集成过于复杂,文档不足,并且使用起来比应有的难度更大。
我们计划修复这些问题,但目前没有具体的完成时间。我们的分支 v1.0
是尝试解决这些问题的尝试,并且我们正在努力进行。v0.5、v0.6和v0.7也是尝试修复这些问题的尝试,但它们是过于雄心勃勃的重写。v1.0希望带来最小的破坏性变更,同时显著改进内部结构,进行相当程度的重构,但尽量减少重写。
安装
composer require taeluf/phad v0.4.x-dev
或者在您的 composer.json
{"require":{ "taeluf/phad": "v0.4.x-dev"}}
文档
- 基本用法 - 不同的视图和初始设置的示例
- 速查表 - 函数和功能的快速概述,以及
- 扩展示例 - 生成网站地图、访问控制、垃圾邮件控制、错误处理等示例。
- 故障排除 - 已知问题和解决方案
- 实用工具/功能
- 表单验证 - 编写表单,在提交时自动验证,或手动验证数据
架构 - Phad开发的架构概述。
示例视图
当请求 /blog/some-slug/
时,将执行 SELECT * from blog AS Blog WHERE Blog.slug LIKE 'some-slug'
(使用PDO通过属性参数绑定)。然后,h1
将填充为 blog.title
,在将其从Markdown转换为HTML后,<x-prop ...>
将完全替换为 blog.body
。
<route pattern="/blog/{slug}/"></route>
<div item="Blog" >
<p-data where="Blog.slug LIKE :slug"></p-data>
<h1 prop="title"></h1>
<x-prop prop="body" filter="commonmark:markdownToHtml"></x-prop>
</div>
还提供了网站地图信息、PHP代码和访问控制(如 role:admin
)等许多其他功能。
示例表单
GET /form/blog/
将显示此表单。如果传递 ?id=37
,则将自动将具有 id=37
的博客文章填充到表单中。
POST /form/blog/
将将博客文章保存到数据库,无论是否 INSERT
新文章或 UPDATE
现有文章。
<route pattern="/form/blog/"></route>
<form item="blog" target="/blog/{slug}/">
<onsubmit><?php
$articleRow['slug'] = \YourNamespace\slugify($articleRow['title']);
?></onsubmit>
<input type="text" name="title" maxlength="75" />
<textarea name="body" maxlength="1500"></textarea>
<input type="submit" value="Submit" />
<input type="hidden" name="id" />
<!-- The `backend` type allows the form validation to permit slug being added during `onsubmit` ->
<input type="backend" name="slug" />
</form>
表单还支持 <didsubmit>
、访问设置(如 role:admin
)、文件上传(有点乱)等更多功能。