rvanmarkus/modx-laravel-models

该包已废弃,不再维护。未建议替代包。

借助 Laravel 和 MODX 建立您的应用程序/网站

0.0.3 2015-10-30 01:58 UTC

This package is not auto-updated.

Last update: 2022-03-19 04:40:39 UTC


README

Laravel 5 Eloquent 数据库模型,用于与 MODX 数据库交互。

此包可以帮助您构建 Laravel 应用程序,查询 MODX 页面/内容和模板变量。使用 Laravel 框架的所有现代和美观功能,为用户提供 MODX CMS 的便捷性。

安装

$ composer require rvanmarkus/modx-laravel-models

或者在您的 composer.json 中添加以下内容

"require": {
    "rvanmarkus/modx-laravel-models": "dev-master"
}

##入门

将您的 Laravel 应用程序连接到与 MODX 相同的数据库,并使用相同的编码设置。(app/config/database.php)

直接使用 Rvanmarkus/Modxmodels/ModxContentModel 类

use Rvanmarkus\Modxmodels\ModxContentModel
 
//queries directly modx_site_content table => returns title, content, author, etc 
$content = ModxContentModel::where('alias','=','/about-us')->get();   

使用指定 MODX 模板 ID 的自定义模型类

创建一个新的 PHP 类,并扩展 Rvanmarkus/Modxmodels/PageModel。在 MODX 管理器中创建一个新的模板,并将新的模板 ID 添加到模型中。

(例如,App/Books.php)

use Rvanmarkus\Modxmodels\ModxPageModel

class Books extends ModxPageModel{
    const MODX_TEMPLATE_ID = 3; // id reference of the MODX (book) template (can be founded in MODX manager / or database)
}

$book = Books::where('alias','=','/example-book')
                ->with('templateVariables');
                ->published()
                ->sortPublished()
                ->get();

//Get your template variables from the templateVariables collection;                    
$book->templateVariables->get('NameOfTemplateVariables');

使用自定义模型类和作用域

如果您不想使用由模板指定的模型,创建一个直接扩展 Rvanmarkus/Modxmodels/ModxContentModel 类的模型,而不使用 PageModel 类。此类将默认根据您添加的作用域查询所有 modx_site_content 数据。有关更多信息,请参阅 Eloquent 文档。

模板变量

您可以通过添加 'TemplateVariables' 关系来预加载模板变量(有关更多信息,请参阅 Laravel Eloquent 文档

use Rvanmarkus/Modxmodels/ModxContentModel
        
//query content models where alias is'/about-us' and load all related template variables  
$book = Books::with('templateVariables')
            ->where('alias','=','/john-doe-the-book')
            ->published()
            ->firstOrFail();
           
//for example: query the template variable (added in the MODX manager, with input type: *checkbox*) called 'Genres'
 
$tv = $book->templateVariables->get('Genres'); //ex. ['Roman','Science Fiction'] returns a array of selected checkbox TV values

模型自动将模板变量的某些值转换为对象。以下模板变量类型将被自动转换

  • 日期
  • 文本
  • 复选框(多个值)
  • MIGX 数据

示例

$book->templateVariables->get('DateTemplateVariable') 
// returns Carbon DateTime Object value
    
$book->templateVariables->get('MIGXTemplateVariable') 
// returns PHP Object value

$book->templateVariables->get('CheckboxTemplateVariable') 
// returns PHP Array value

$book->templateVariables->get('TextTemplateVariable') 
// returns string value