shama/oven

一个 CakePHP 2 重制器和 CMS 插件

dev-master 2012-07-12 05:03 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:30:20 UTC


README

一个 CakePHP 2 重制器和 CMS 插件

BETA / 警告

Oven 目前处于 BETA 版本。我希望得到社区对这个项目的看法和反馈。可以打开一个 issue,在 twitter 上找到我或者在 irc #cakephp 上以 shama 为名。

这意味着功能将会改变,这个插件可能会 破坏你的代码。你已经收到警告。

这是什么?

Oven 是一个 CakePHP 插件,允许你从一个单一的 json 配方 文件中构建整个应用程序。它允许你像平常一样编辑你的应用程序,并在需要时重新烘焙,而不会覆盖你的代码。它还包括一个易于覆盖的脚手架/CMS,由你的配方文件控制。

一行安装(需要 git)

curl https://raw.github.com/shama/oven/master/Console/install.sh | bash -s NewCakeApp

使用 git 下载最新的 CakePHP 和 Oven。将 NewCakeApp 替换为你想要安装到的文件夹名称或删除以在当前工作文件夹中安装。

手动安装

如果这不起作用,或者你更喜欢手动操作,那么只需下载或...

git clone git://github.com/shama/oven.git Plugin/Oven && cd Plugin/Oven && git submodule update --init

在 CakePHP 2.x 应用程序中。在 app/Config/bootstrap.php 中启用插件并运行命令 ./Console/cake oven.init

使用方法

初始化

oven.init 命令将设置你的 Config/core.phpConfig/database.php 文件(如果它们尚未定制)。建议在安装 Oven 后运行此命令以初始化你的应用程序。

./Console/cake oven.init

配方烘焙

Oven 使用 Config/oven.json 作为配方来构建你的应用程序。在编辑配方后,运行命令

./Console/cake oven.bake

如果你想让 Oven 持续监视你的配方更改,则运行命令

./Console/cake oven.watch

合并类

Oven 的核心是一个很棒的 PhpBaker 库。它可以将任何 PHP 类转换为数组。一旦一个类被表示为数组,我们就可以像操作数组一样操作文件。使用这种方法,我们可以使用命令轻松地合并两个类

./Console/cake oven.merge Controller/CommentsController Controller/NewCommentsController

将 CommentsController 中的属性和方法合并到 NewCommentsController 中。任何冲突都将使用第二个声明的类。

CMS

控制器

Oven 包含了一个无障碍的 CMS。当你需要时使用它,或者当你只想部分使用它时覆盖它。要使用 CMS,你的控制器应该扩展 Oven.BasesController。这将自动根据你的配方设置 CRUD。

你的控制器可以非常简单,如下所示

<?php
App::uses('BasesController', 'Oven.Controller');
class PagesController extends BasesController {
}

使用这种方式,如果你访问 example.com/admin/pages,你将能够查看、添加、编辑和删除你的页面。通过编辑 Config/oven.json 文件来修改视图中的模式或字段。

视图

如果你想要自定义管理视图,请像在 CakePHP 中一样设置它们(app/View/Pages/admin_edit.ctp)。Oven 将检测它们并使用你的视图而不是核心 Oven 视图。

核心 Oven 视图使用视图块,你可以部分覆盖它们。例如,如果你想更新 admin_edit 上的侧边栏链接,只需创建一个视图,如下所示

<?php $this->extend('Oven./Admin/edit'); ?>
<?php $this->start('sidebar'); ?>
    <?php echo $this->Html->link('My Custom Link', '/somewhere'); ?>
<?php $this->end(); ?>

模型

对于你的模型来说,扩展 OvenBase 是一个好的做法,但不是必需的

<?php
App::uses('OvenBase', 'Oven.Model');
class Page extends OvenBase {
}

这仅适用于某些自定义字段类型,例如 fileslug

认证

默认情况下,Oven 中没有实现认证。处理认证应由您自己负责。尽管为了方便起见,如果您的应用程序使用CakeDC Users 插件,Oven 将会自动为您设置认证(除非您已经有了自定义的认证方案)。

愿望清单

  • 制作一个展示 Oven 的视频
  • 创建自定义字段类型的说明/帮助
  • 使用不同视图类型的说明/帮助
  • 检测现有 CakePHP 是否通过 install.sh 安装
  • 以核心 CakePHP 模板作为起点进行合并
  • 在 recipe 网站上构建 recipe(使用 plugins.cakephp.org?)然后安装它
  • 将默认主题升级到 bootstrap 2
  • 将 ckeditor 字段类型放入自己的仓库中,并使用更轻量级的解决方案
  • 制作默认文件管理器
  • 多菜谱
  • 插件烘焙
  • Croogo 集成

许可证

版权 2012 Kyle Robinson Young。在MIT 许可证下发布。