svandragt/silverstripe-hiddenfields

此包已被弃用且不再维护。未建议替代包。

通过 $hidden_fields 指定的表单字段,并在编辑表单中隐藏它们。

安装: 19

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 1

开放问题: 0

类型:silverstripe-module

dev-master 2016-04-14 08:38 UTC

This package is not auto-updated.

Last update: 2020-01-19 17:09:45 UTC


README

通过 $hidden_fields 指定要隐藏的表单字段,并在编辑表单中隐藏它们。我发现如果您完全删除字段,则值不会被保存到数据库中,并且您最终会得到一个没有父关系的子记录。

相反,此扩展会将字段替换为隐藏字段。

使用方法

  1. 使用 composer 安装 composer require "svandragt/silverstripe-hiddenfields:*"
  2. 通过配置系统将数据扩展附加到您的数据对象/页面类型
Object::add_extension("DataObject","HiddenFieldsDataExtension");

DIY 演示

Course.php

<?php
class Course extends DataObject {
	public static $db = array(
		'Title'             => 'Varchar(500)',
	);

	public static $has_many = array(
		'CourseDates'        => 'CourseDate',
	);	

}

CourseDate.php

<?php
class CourseDate extends DataObject {
	public static $db = array(
		'StartDate' => 'Date',
		'EndDate'   => 'Date',
	);

	public static $has_one = array(
		'Course' => 'Course'
	);

	public static $hidden_fields = array(
		'CourseID'
	);

}

CourseModelAdmin.php

<?php

class CourseModelAdmin extends ModelAdmin {
	public static $managed_models = array(
		'Course', 
		'CourseDates',
	); 
  	static $url_segment = 'courses'; // Linked as /admin/products/
  	static $menu_title = 'Course Admin';
	
}

执行 /dev/build 并在 CMS 中创建一个新的课程。保存后,当访问 CourseDates 标签时,您将看不到选择与日期相关的课程(在这种情况下,它将自动保存来自父-子关系的值)。