此包最新版本(v0.2.2)没有可用的许可信息。

v0.2.2 2017-11-06 12:50 UTC

This package is not auto-updated.

Last update: 2024-09-25 01:43:55 UTC


README

Build Status StyleCI

安装

composer require lumenpress/acf

config/acf.php 文件复制到您的本地配置文件夹,并在 bootstrap/app.php 中注册配置 + 服务提供者

$app->configure('acf'); 
$app->register(LumenPress\ACF\ServiceProvider::class);

模式

字段组

创建字段组

use LumenPress\ACF\Schema;
use LumenPress\ACF\Models\FieldGroup;

Schema::create($groupKey, function (FieldGroup $group) {
    $group->title('Title'); // required
    $group->location('post_type', 'page'); // required
});

$groupKey 应该是唯一的,通常以 group_ 作为前缀。

Schema::create('group_599d8daf5e131', function (FieldGroup $group) {
    $group->title('Title'); // required
    $group->location('post_type', 'page'); // required
});

如果您不以 group_ 开头,密钥将使用 md5 加密。

Schema::create('home_page', function (FieldGroup $group) {
    $group->title('Home'); // required
    $group->location('post_type', 'page'); // required
});

// algorithm
echo 'group_'.substr(hash('md5', 'home_page'), 8, 16);
// group_3f239af6fe3db5c0

可用的字段组设置

  • $group->title('string') 必需
  • $group->location($param, $operator, $value) 必需
  • $group->position('normal')
  • $group->style('default')
  • $group->label_placement('top')
  • $group->instruction_placement('label')
  • $group->hide_on_screen('metabox')
  • $group->description('string')
  • $group->order(0)
  • $group->active(true) truefalse

位置

参数

  • 帖子
    • post_type
    • post_template
    • post_status
    • post_format
    • post_category
    • post_taxonomy
    • post
  • 页面
    • page_template
    • page_type
    • page_parent
    • page
  • 用户
    • current_user
    • current_user_role
    • user_form
    • user_role
  • 表单
    • 分类法
    • 附件
    • 评论
    • 小工具
    • 导航菜单
    • 导航菜单项
    • 选项页面

运算符

==!=

$group->location($param, $value); // operator is '==';
$group->location($param, $operator, $value);

A 和 B

$group->location(
    [$param, $operator, $value], // A
    [$param, $operator, $value]  // B
);

// another
$group->location($param, $operator, $value)  // A
    ->location($param, $operator, $value);   // B

A 或 B

$group->location($param, $operator, $value)   // A
    ->orLocation($param, $operator, $value);  // B

(A 和 B) 或 (C 和 D)

$group->location(
        [$param, $operator, $value],  // A
        [$param, $operator, $value]   // B
    )->orLocation(
        [$param, $operator, $value],  // C
        [$param, $operator, $value]   // D
    );

// another
$group->location($param, $operator, $value)  // A
    ->location($param, $operator, $value);   // B
    ->orLocation($param, $operator, $value)  // C
    ->location($param, $operator, $value);   // D

重命名/删除字段组

要重命名现有的字段组,请使用 rename 方法

Schema::rename($oldKey, $newKey);

要删除现有的字段组,您可以使用 drop 方法

Schema::drop($groupKey);

字段

创建字段

Schema::create($groupKey, function (FieldGroup $group) {
    $group->title('Demo'); // required
    $group->location('post_type', 'post'); // required
    $group->fields(function($field) {
        $field->text('uniqid_name')->label('Label');
    });
});

可用的字段类型

// Basic
$field->text('text')->label('Text');
$field->textarea('textarea')->label('Textarea');
$field->number('number')->label('Number');
$field->email('email')->label('Email');
$field->url('url')->label('URL');
$field->password('password')->label('Password');

// Content
$field->wysiwyg('wysiwyg');
$field->oembed('oembed');
$field->image('image');
$field->file('file');
$field->gallery('gallery');

// Choice
$field->true_false('true_false');
$field->checkbox('checkbox')->choices(['value1', 'value2']);
$field->radio('radio')->choices(['value1', 'value2']);;
$field->select('select')->choices(['value1', 'value2']);;

// Relational
$field->link('link');
$field->page_link('page_link');
$field->post_object('post_object');
$field->relationship('relationship');
$field->taxonomy('taxonomy');
$field->user('user');

// JQuery
$field->google_map('google_map');
$field->date_picker('date_picker');
$field->date_time_picker('date_time_picker');
$field->time_picker('time_picker');
$field->color_picker('color_picker');

// Layout

$field->tab('tab');
$field->message('Message')->content('Content');

$field->group('group')->fields(function($field) {
    $field->text('text');
    $field->image('image');
});

$field->repeater('repeater')->fields(function($field) {
    $field->text('text')->label('Text');
    $field->image('image');
});

$field->flexible('flexible')->layouts(function($flexible) {
    $flexible->layout('layout1')->label('Layout 1')->fields(function($field) {
        $field->textarea('textarea')->label('Textarea');
    });
    $flexible->layout('layout2')->label('Layout 2')->fields(function($field) {
        $field->text('text')->label('Text');
    });
});

// friendly
$field->clone('clone')->fields('group');
$field->clone('clone')->fields('group.text');
$field->clone('clone')->fields('group.text', 'group.textarea');

// strict
$field->clone('clone')->fields('group_1b8797f52e1e7731');
$field->clone('clone')->fields('field_599ec2068e143');
$field->clone('clone')->fields('field_599ec2068e143', 'field_599ec6186b36b');

修改字段

更新字段属性

Schema::group($groupKey, function (FieldGroup $group) {
    $group->fields(function($field) {
        $field->text('text')->label('Text2');
    });
});

重命名字段

Schema::group($groupKey, function (FieldGroup $group) {
    $group->fields(function($field) {
        $field->rename('oldname', 'newname');
    });
});

删除字段

Schema::group($groupKey, function (FieldGroup $group) {
    $group->fields(function($field) {
        // single field
        $field->drop('text');
        // multiple fields
        $field->drop('text', 'textarea');
        // all
        $field->dropAll();
    });
});

模型

use LumenPress\ACF\Concerns\HasFields;

class Post extends \LumenPress\Nimble\Models\Post
{
    use HasFields;
}

插入

$post = new Post;

$post->title = 'Title1';
$post->type = 'post';

$post->acf->schema('home_fields');

$post->acf->text = 'Text';
$post->acf->textarea = 'Textarea';

$post->save();

更新

$post = Post::find(2);

$post->acf->text = 'Text2';
$post->acf->textarea = 'Textarea2';

$post->save();

删除

$post = Post::find(2);

unset($post->acf->text);
unset($post->acf->textarea);

$post->save();

构建器

$post = Post::find(2);
$builder = $post->acf();

检索结果

$post->acf('abc')->value();
$post->acf()->text('abc')->value();

插入值

$post->acf()->text('abc')->insertValue('Value 1');

更新值

$post->acf()->text('abc')->updateValue('Value 2');

删除值

$post->acf('abc')->delete();
$post->acf()->text('abc')->delete();