erenmustafaozdal/laravel-page-module

laravel 5.1 页面管理模块包

v0.1.3 2016-08-24 12:40 UTC

This package is not auto-updated.

Last update: 2024-09-23 07:16:09 UTC


README

Laravel 5.1 Source License

Laravel Page Module 是一个包含 Laravel 5.1 项目中页面管理操作的模块包。此包包含除了用户界面(视图)之外的所有后台操作。如果您想包含视图,可以使用 Laravel Modules Core 包来获得完整的模块。

  1. 安装
    1. 文件发布
    2. 迁移
  2. 使用
    1. 配置文件
      1. 常规设置
      2. URL 设置
      3. 控制器设置
      4. 路由开启/关闭设置
      5. 视图设置
    2. 视图设计
      1. 模型使用
        1. 页面分类
        2. 页面
      2. 路由
        1. 页面分类路由
        2. 属于分类的页面路由
        3. 页面路由
      3. 表单字段
        1. 页面分类表单
        2. 属于分类的页面表单
        3. 页面表单
    3. 审核
    4. 事件
      1. 页面分类事件
      2. 页面事件
  3. 许可证

安装

可以使用以下代码通过 Composer 安装。

composer require erenmustafaozdal/laravel-page-module

或者将以下内容添加到 composer.json 文件中,并更新包。

{
    "require": {
        "erenmustafaozdal/laravel-page-module": "~0.1"
    }
}
$ composer update

完成此操作后,需要将服务提供者添加到项目中的 config/app.php 文件。

ErenMustafaOzdal\LaravelPageModule\LaravelPageModuleServiceProvider::class,

❗ 如果您要使用 Laravel Modules Core 包,则需要先定义该包的服务提供者文件。

文件发布

Laravel Page Module 包的文件可以通过以下代码发布。

php artisan vendor:publish --provider="ErenMustafaOzdal\LaravelPageModule\LaravelPageModuleServiceProvider"

迁移

发布文件后,需要进行迁移操作。

php artisan migrate

❗ 该包通过编辑器将数据记录到数据库中。正如您所预料的,在 Laravel Blade 模板中使用 {{ }} 将 HTML 标签作为文本处理。而 Laravel 使用 {!! !!} 的方式,如果不可信的人插入数据,可能会造成 XSS 漏洞。为了避免这种情况,Laravel Page Module 使用了 mewebstudio/Purifier 包。接下来的操作是给予 Purifier 包写入权限。

首先发布这个包的文件

php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"

然后给予权限。

sudo chmod 777 vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer

最后,您需要适当地定义 App\PageCategoryApp\Page 模型。为此,您需要将 App\PageCategory 模型扩展自 ErenMustafaOzdal\LaravelPageModule\PageCategory 模型,将 App\Page 模型扩展自 ErenMustafaOzdal\LaravelPageModule\Page 模型。

namespace App;

use ErenMustafaOzdal\LaravelPageModule\PageCategory as EMOPageCategory;

class PageCategory extends EMOPageCategory
{
    //
}
namespace App;

use ErenMustafaOzdal\LaravelPageModule\Page as EMOPage;

class Page extends EMOPage
{
    //
}

使用

安装完成后;如果包含了 Laravel Modules Core 包,则设计方面将准备好使用。

❗ 如果文本显示错误,这是由于 Laravel Modules Core 包的英文语言文件尚未准备好的原因。因此,您需要在项目的 config/app.php 文件中设置 'locale' => 'tr'

配置文件

常规设置

包中使用的常规设置。在配置文件中定义的根目录设置。

URL 设置

在浏览器地址栏中显示的地址的设置。这是配置文件中 url 区域的设置。

例如:使用 activate_route 设置,激活页面地址被定义为 account-activate。这样地址栏中的外观将是这样的:www.siteadi.com/account-activate/{id}/{code}

控制器设置

您可能希望在某些方法中进行修改。在此处,您可以定义自己的 Controller 类,并扩展 Laravel 页面模块 的相关控制器,以便覆盖您想要的方法。这些设置位于配置文件的 controller 区域。

路由开启/关闭设置

根据项目需要,某些路由可能不起作用。您可能不想让它们可用。使用以下设置,您可以打开或关闭所需的路由。这些设置位于配置文件的 routes 区域。所有路由最初都设置为 true 并处于打开状态。

| 设置 | 说明 | |---|---|---| | admin.page_category | 管理页面类别面板 resource 路由 | | admin.page | 管理页面面板 resource 路由 | | admin.page_publish | 管理页面发布面板 get 路由 | | admin.page_notPublish | 管理页面撤销发布面板 get 路由 | | admin.category_pages | 管理属于类别的页面面板 resource 路由 | | admin.category_pages_publish | 管理属于类别的页面发布面板 get 路由 | | admin.category_pages_notPublish | 管理属于类别的页面撤销发布面板 get 路由 | | api.page_category | 页面类别 api resource 路由 | | api.page_category_models | 获取页面类别的 api post 路由(例如在 Laravel Modules Core 包中使用 Select2 提取类别时使用)| | api.page_category_group | 对页面类别进行分组处理的 api post 路由 | | api.page_category_detail | 以 Datatables 格式获取页面类别详细信息的 api get 路由 | | api.page_category_fastEdit | 为页面类别快速编辑而获取的 api post 路由 | | api.page | 页面 api resource 路由 | | api.page_group | 对页面进行分组处理的 api post 路由 | | api.page_detail | 以 Datatables 格式获取页面详细信息的 api get 路由 | | api.page_fastEdit | 为页面快速编辑而获取的 api post 路由 | | api.page_publish | 页面发布 api get 路由 | | api.page_notPublish | 页面撤销发布 api get 路由 | | api.page_contentUpdate | 更新页面内容的 api post 路由 | | api.category_pages_index | 获取属于类别的页面的 api get 路由 |

视图设置

这些设置定义了包将使用的视图。它们位于配置文件的 views 区域。这些值默认设置为 Laravel Modules Core 包的视图。

视图设计

该包与 Laravel Modules Core 包一起直接可供使用。但您也可以设计自己的自定义视图。本部分为特殊设计提供指南。

模型使用

此部分包含有关 PageCategoryPage 模型的特性和方法的信息。这些方法和特性可以在 App\PageCategoryApp\Page 中重写。

页面分类

####### 一般特性

  1. protected $table = 'page_categories'
  2. protected $fillable = ['name']

####### $page_category->pages Collection hasMany() 方法通过 App\Page 模型与关系关联

####### $page_category->name_uc_first string 将页面类别的名称转换为大写字母形式

####### $page_category->created_at string 根据配置文件中的定义返回页面类别的注册日期

####### $page_category->created_at_for_humans string 以可读性高的数据形式返回页面类别的注册日期。例如:1周前

####### $page_category->created_at_table arraydisplay(last_login_for_humans) 和 timestamp 形式存储的数组形式返回页面类别的注册日期。为在表格中使用而创建

####### $page_category->updated_at string 根据配置文件中的定义返回页面类别的更新日期

####### $page_category->updated_at_for_humans string 页面类别的更新时间以易读的格式返回。例如:1周前

####### $page_category->updated_at_table array 页面类别的更新时间以 display(last_login_for_humans) 和 timestamp 形式保存的数组形式返回。为在 Datatable 中使用而创建。

页面

####### 一般特性

  1. protected $table = 'pages'
  2. protected $fillable = ['category_id','title','slug','content','description','meta_title','meta_description','meta_keywords','is_publish']

####### $page->category App\PageCategory belongsTo() 方法与 App\PageCategory 模型建立关系

####### $page->title_uc_first string 首字母大写的页面标题

####### $page->slug string 页面的 URL 格式

####### $page->content string 清除 XSS 攻击的页面内容

####### $page->description string 页面描述

####### $page->meta_title string 页面 meta 标题

####### $page->meta_description string 页面 meta 描述

####### $page->meta_keywords string 页面 meta 关键字

####### $page->read boolean 页面阅读次数 (可扩展的前缀,该值增加并显示)

####### $page->is_publish boolean 页面是否发布

####### $page->created_at string 根据配置文件中的识别返回页面的创建时间

####### $page->created_at_for_humans string 以易读的格式返回页面的创建时间。例如:1周前

####### $page->created_at_table arraydisplay(last_login_for_humans) 和 timestamp 形式保存的数组形式返回页面的创建时间。为在 Datatable 中使用而创建

####### $page->updated_at string 根据配置文件中的识别返回页面的更新时间

####### $page->updated_at_for_humans string 以易读的格式返回页面的更新时间。例如:1周前

####### $page->updated_at_table arraydisplay(last_login_for_humans) 和 timestamp 形式保存的数组形式返回页面的更新时间。为在 Datatable 中使用而创建

路由

Laravel 页面模块 包除了拥有的 CRUD 路由外,还有许多可用于通过 ajax 执行的路由。在设计视图时可以使用它们。

下一节将介绍可用的表单元素。

页面分类路由

包括页面类别 CRUD 操作以及部分包含 ajax 操作的路由。

属于分类的页面路由

包括特定类别页面的 CRUD 操作以及部分包含 ajax 操作的路由。

页面路由

包括页面 CRUD 操作以及部分包含 ajax 操作的路由。

表单字段

在操作过程中,您将使用的表单元素应与数据库表中的列名相同。以下为每个操作所需元素的列表。

❗ 下面的表单名称是强制性的,顺序可以更改。

lang/.../validation.php 文件中不要忘记指定这些表单名称的文本值!此外,您需要为每种语言创建一个验证文件。

页面分类表单
  • store 操作表单元素
    • name

StoreRequest

public function rules()
{
    return [
      'name'          => 'required|max:255'
    ];
}
  • update 操作表单元素
    • name

UpdateRequest

public function rules()
{
    return [
      'name'          => 'required|max:255'
    ];
}
  • API index 筛选操作数据

    • action=filter
    • id
    • name
    • created_at_from
    • created_at_to
  • API store 操作数据,与上述 store 操作相同。

  • API update 操作数据,与上述 update 操作相同。

  • API group 操作数据

    • action=destroy
    • id (以数组形式保存模型 id)

属于分类的页面表单
  • store 操作表单元素
    • category_id (因为页面属于特定类别;在视图中以隐藏元素保存值)
    • title
    • slug
    • description
    • is_publish
    • content
    • meta_title
    • meta_description
    • meta_keywords

StoreRequest

public function rules()
{
    return [
      'category_id'       => 'required|integer',
      'title'             => 'required|max:255',
      'slug'              => 'alpha_dash|max:255|unique:pages',
      'description'       => 'max:255',
      'meta_title'        => 'max:255',
      'meta_description'  => 'max:255',
      'meta_keywords'     => 'max:255',
    ];
}
  • update 操作表单元素
    • category_id (因为页面属于特定类别;在视图中以隐藏元素保存值)
    • title
    • slug
    • description
    • is_publish
    • content
    • meta_title
    • meta_description
    • meta_keywords

UpdateRequest

public function rules()
{
    $id = is_null($this->segment(5)) ? $this->segment(3) : $this->segment(5);
    return [
      'category_id'       => 'required|integer',
      'title'             => 'required|max:255',
      'slug'              => 'alpha_dash|max:255|unique:pages,slug,'.$id,
      'description'       => 'max:255',
      'meta_title'        => 'max:255',
      'meta_description'  => 'max:255',
      'meta_keywords'     => 'max:255',
    ];
}
  • API index 筛选操作数据

    • action=filter
    • id
    • slug
    • title
    • status
    • created_at_from
    • created_at_to
  • API store 操作数据,与上述 store 操作相同。

  • API update 操作数据,与上述 update 操作相同。

  • API group 操作数据

    • action=publish|not_publish|destroy
    • id (以数组形式保存模型 id)

页面表单

所有字段与页面类别表单部分中的相同。唯一不同的是 API index 筛选操作。

  • API index 筛选操作数据
    • action=filter
    • id
    • slug
    • title
    • category
    • status
    • created_at_from
    • created_at_to

审核

Laravel分页模块为每个表单请求定义了验证规则。对于此类表单请求验证规则,您无需做任何事情。上述代码中已在Request类中的rules方法中对这些规则进行了说明。

事件

包中的几乎所有操作都会触发一个特定的事件。您可以在自己的监听器文件中监听这些事件,并在事件触发时轻松执行所需操作。

页面分类事件

页面事件

许可证

MIT