arbory/arbory

Laravel 的管理界面

4.0.2 2024-08-29 13:02 UTC

README

Packagist Scrutinizer Code Quality Build Status StyleCI Coverage Status

安装

创建新的 Laravel 项目

composer create-project --prefer-dist laravel/laravel=8.0 my-project

进入项目根目录

cd my-project

要求 Arbory 包

composer require arbory/arbory

填写数据库信息

vi .env

运行安装程序并按照指示操作

php artisan arbory:install

完成了!

Visit https:///admin

用法

注册新页面

Page::register( App\Pages\TextPage::class )
    ->fields( function( FieldSet $fieldSet )
    {
        $fieldSet->add( new Arbory\Base\Admin\Form\Fields\Richtext( 'text' ) );
    } )
    ->routes( function()
    {
        Route::get( '/', App\Http\Controllers\TextPageController::class . '@index' )->name( 'index' );
    } );

注册新管理模块

Admin::modules()->register(  App\Http\Controllers\Admin\TextController::class );

处理节点

节点仓库用于确保网站只向用户显示活动节点

$currentNode = app( Arbory\Base\Nodes\Node::class );
$nodes = app( Arbory\Base\Repositories\NodesRepository::class ); 

// returns only the active children of the current node
$nodes->findUnder( $currentNode );

验证

验证规则 可以附加到任何字段,如下所示

$form->addField( new Text( 'title' ) )->setRules( 'required' );

验证翻译

$form->addField( new Translatable( ( new Text( 'title' ) )->rules( 'required' ) ) );

自定义验证器

  • arbory_require_one_localized - 至少存在一个此字段的翻译
  • arbory_file_required - 文件已上传或正通过请求传递

字段

对象关系

创建与其他模型的关系

new Arbory\Base\Admin\Form\Fields\ObjectRelation( 'field_name', Arbory\Base\Nodes\Node::class );

要限制用户可以选择的关系数量,可以传递第三个参数。限制为单个模型的关系字段将更紧凑地呈现。

new ObjectRelation( 'field_name', Arbory\Base\Nodes\Node::class, 1 ); // single relation, compact view 
new ObjectRelation( 'field_name', Arbory\Base\Nodes\Node::class, 10 ); 

可以传递一个可选的深度参数(节点关系将自动设置),它会在字段项中添加视觉嵌套

( new ObjectRelation( 'field_name', Arbory\Base\Nodes\Node::class ) )->setIndentAttribute( 'depth' );

可以根据属性对项进行分组

$getName = function( \Arbory\Base\Nodes\Node $model ) 
{
    return class_basename( $model->content_type );
};

( new ObjectRelation( 'field_name', Arbory\Base\Nodes\Node::class ) )->groupBy( 'content_type', $getName );

设置

注册设置(可选嵌套)并检索它

return [
    'my_letter' => [
        'to' => 'a friend',
        'subject' => 'Hello!'
    ]
]
Settings::has('my_letter.to'); // true
Settings::get('my_letter.to'); // "a friend"

定义字段类型

return [
    'my_setting_key' => [
        'value' => 'My setting value',
        'type' => Arbory\Base\Admin\Form\Fields\CompactRichtext::class
    ],
]

文件设置

return [
    'my_setting_file' => [
        'value' => null,
        'type' => Arbory\Base\Admin\Form\Fields\ArboryFile::class
    ],
    'my_setting_image' => [
        'value' => null,
        'type' => Arbory\Base\Admin\Form\Fields\ArboryImage::class
    ],
]

可翻译设置

return [
    'hello' => [
        'type' => Arbory\Base\Admin\Form\Fields\Translatable::class,
        'value' => [
            'type' => Arbory\Base\Admin\Form\Fields\CompactRichtext::class,
            'value' => [
                'en' => 'Hello',
                'lv' => 'Sveiks'
            ]
        ]
    ],
]

生成管理员用户

php artisan arbory:create-user 

贡献

要提交 SCSS/Js 变更,必须重新构建包含编译资源的 dist 目录。运行 npm run prod 来执行此操作。

编码风格

使用 PSR-1/2

JS

我们同时为 JS 和 SASS 使用 airbnb 编码风格(以下链接)。

要安装 PHPStorm 内置的检查,请按照以下说明操作: https://www.themarketingtechnologist.co/how-to-get-airbnbs-javascript-code-style-working-in-webstorm/

注意!

当在配置窗口中指定 JSCS 包时,必须在本地安装(在项目内)。全局安装将不会工作(PHPStorm 将全局安装包)。

定制

可以在单独的文件中修改规则(项目根目录中的 .jscsrc.jscs.json)或项目的 package.json 文件(jscsConfig 部分)。

链接