在GridField中显示多个关系中的标题-Silverstripe

在GridField中显示多个关系中的标题-Silverstripe,silverstripe,Silverstripe,如何在GridField摘要中显示多个关系中的标题 我尝试了RelationName.Title,但结果只是一个空字段应该有两种解决方案: 在链接的数据对象上定义$summary\u字段: private static $summary_fields = array( 'YourFieldName', 'AnotherField' ); 或者使用定义关系的页面/数据对象上的GridFieldConfig: $config->getComponentByType('Grid

如何在GridField摘要中显示多个关系中的标题


我尝试了RelationName.Title,但结果只是一个空字段

应该有两种解决方案:

在链接的数据对象上定义
$summary\u字段

private static $summary_fields = array(
    'YourFieldName',
    'AnotherField'
);
或者使用定义关系的页面/数据对象上的
GridFieldConfig

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'FieldName' => 'GridFieldColumnName',
    'AnotherFieldName' => 'AnotherGridFieldColumnName',
));
$config
是由
GridField
使用的
GridFieldConfig
实例

编辑

要对GridField中包含的数据进行更高级的格式化/控制,可以使用
setFieldFormatting

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'TeamLink' => 'Edit teams'
));

$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(array(
    'TeamLink' => function($value, $item)
    {
      // $item here would be a TeamMember instance
      // since the GridField displays TeamMembers

      $links = 'No teams';

      $teamModelAdminClass = 'TeamModelAdmin'; //change to your classname
      $teams = $item->Teams(); // get the teams

      if ( $teams->count() > 0 )
      {
        $links = '';
        $teamClass = $teams->dataClass;

          $teamAdminURL = Config::inst()->get($teamModelAdminClass, 'url_segment');
          $teamEditAdminURL = 'admin/'.$teamAdminURL.'/'.$teamClass.'/EditForm/field/'.$teamClass.'/item/';       

          foreach($teams as $team)
          {
            $links .= '<a href="'.$teamEditAdminURL.$team->ID.'/edit">Edit '.$team->Title.'</a><br/>';
          }
      }

      return $links;
    }
));
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(数组(
“团队链接”=>“编辑团队”
));
$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(数组(
“TeamLink”=>函数($value$item)
{
//$item将是一个TeamMember实例
//因为GridField显示团队成员
$links='无团队';
$teamModelAdminClass='TeamModelAdmin';//更改您的类名
$teams=$item->teams();//获取团队
如果($teams->count()>0)
{
$links='';
$teamClass=$teams->dataClass;
$teamAdminURL=Config::inst()->get($teamModelAdminClass,'url_段');
$teamEditAdminURL='admin/'.$teamAdminURL./'.$teamClass./EditForm/field/'.$teamClass./item/';
foreach($teams作为$team)
{
$links.='
'; } } 返回$links; } ));

在这里,
setFieldFormatting
将在由
setDisplayFields
定义的
TeamLink
列中向团队成员所属的所有团队输出编辑链接(可能不是最好的示例,但希望您能理解,尽管没有经过测试)。

应该有两个解决方案:

在链接的数据对象上定义
$summary\u字段

private static $summary_fields = array(
    'YourFieldName',
    'AnotherField'
);
或者使用定义关系的页面/数据对象上的
GridFieldConfig

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'FieldName' => 'GridFieldColumnName',
    'AnotherFieldName' => 'AnotherGridFieldColumnName',
));
$config
是由
GridField
使用的
GridFieldConfig
实例

编辑

要对GridField中包含的数据进行更高级的格式化/控制,可以使用
setFieldFormatting

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'TeamLink' => 'Edit teams'
));

$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(array(
    'TeamLink' => function($value, $item)
    {
      // $item here would be a TeamMember instance
      // since the GridField displays TeamMembers

      $links = 'No teams';

      $teamModelAdminClass = 'TeamModelAdmin'; //change to your classname
      $teams = $item->Teams(); // get the teams

      if ( $teams->count() > 0 )
      {
        $links = '';
        $teamClass = $teams->dataClass;

          $teamAdminURL = Config::inst()->get($teamModelAdminClass, 'url_segment');
          $teamEditAdminURL = 'admin/'.$teamAdminURL.'/'.$teamClass.'/EditForm/field/'.$teamClass.'/item/';       

          foreach($teams as $team)
          {
            $links .= '<a href="'.$teamEditAdminURL.$team->ID.'/edit">Edit '.$team->Title.'</a><br/>';
          }
      }

      return $links;
    }
));
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(数组(
“团队链接”=>“编辑团队”
));
$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(数组(
“TeamLink”=>函数($value$item)
{
//$item将是一个TeamMember实例
//因为GridField显示团队成员
$links='无团队';
$teamModelAdminClass='TeamModelAdmin';//更改您的类名
$teams=$item->teams();//获取团队
如果($teams->count()>0)
{
$links='';
$teamClass=$teams->dataClass;
$teamAdminURL=Config::inst()->get($teamModelAdminClass,'url_段');
$teamEditAdminURL='admin/'.$teamAdminURL./'.$teamClass./EditForm/field/'.$teamClass./item/';
foreach($teams作为$team)
{
$links.='
'; } } 返回$links; } ));

在这里,
setFieldFormatting
将在由
setDisplayFields
定义的
TeamLink
列中向团队成员所属的所有团队输出编辑链接(可能不是最好的示例,但希望您能理解,尽管没有经过测试)。

应该有两个解决方案:

在链接的数据对象上定义
$summary\u字段

private static $summary_fields = array(
    'YourFieldName',
    'AnotherField'
);
或者使用定义关系的页面/数据对象上的
GridFieldConfig

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'FieldName' => 'GridFieldColumnName',
    'AnotherFieldName' => 'AnotherGridFieldColumnName',
));
$config
是由
GridField
使用的
GridFieldConfig
实例

编辑

要对GridField中包含的数据进行更高级的格式化/控制,可以使用
setFieldFormatting

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'TeamLink' => 'Edit teams'
));

$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(array(
    'TeamLink' => function($value, $item)
    {
      // $item here would be a TeamMember instance
      // since the GridField displays TeamMembers

      $links = 'No teams';

      $teamModelAdminClass = 'TeamModelAdmin'; //change to your classname
      $teams = $item->Teams(); // get the teams

      if ( $teams->count() > 0 )
      {
        $links = '';
        $teamClass = $teams->dataClass;

          $teamAdminURL = Config::inst()->get($teamModelAdminClass, 'url_segment');
          $teamEditAdminURL = 'admin/'.$teamAdminURL.'/'.$teamClass.'/EditForm/field/'.$teamClass.'/item/';       

          foreach($teams as $team)
          {
            $links .= '<a href="'.$teamEditAdminURL.$team->ID.'/edit">Edit '.$team->Title.'</a><br/>';
          }
      }

      return $links;
    }
));
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(数组(
“团队链接”=>“编辑团队”
));
$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(数组(
“TeamLink”=>函数($value$item)
{
//$item将是一个TeamMember实例
//因为GridField显示团队成员
$links='无团队';
$teamModelAdminClass='TeamModelAdmin';//更改您的类名
$teams=$item->teams();//获取团队
如果($teams->count()>0)
{
$links='';
$teamClass=$teams->dataClass;
$teamAdminURL=Config::inst()->get($teamModelAdminClass,'url_段');
$teamEditAdminURL='admin/'.$teamAdminURL./'.$teamClass./EditForm/field/'.$teamClass./item/';
foreach($teams作为$team)
{
$links.='
'; } } 返回$links; } ));

在这里,
setFieldFormatting
将在由
setDisplayFields
定义的
TeamLink
列中向团队成员所属的所有团队输出编辑链接(可能不是最好的示例,但希望您能理解,尽管没有经过测试)。

应该有两个解决方案:

在链接的数据对象上定义
$summary\u字段

private static $summary_fields = array(
    'YourFieldName',
    'AnotherField'
);
或者使用定义关系的页面/数据对象上的
GridFieldConfig

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'FieldName' => 'GridFieldColumnName',
    'AnotherFieldName' => 'AnotherGridFieldColumnName',
));
$config
是由
GridField
使用的
GridFieldConfig
实例

编辑

要对GridField中包含的数据进行更高级的格式化/控制,可以使用
setFieldFormatting

$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(      
    'TeamLink' => 'Edit teams'
));

$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(array(
    'TeamLink' => function($value, $item)
    {
      // $item here would be a TeamMember instance
      // since the GridField displays TeamMembers

      $links = 'No teams';

      $teamModelAdminClass = 'TeamModelAdmin'; //change to your classname
      $teams = $item->Teams(); // get the teams

      if ( $teams->count() > 0 )
      {
        $links = '';
        $teamClass = $teams->dataClass;

          $teamAdminURL = Config::inst()->get($teamModelAdminClass, 'url_segment');
          $teamEditAdminURL = 'admin/'.$teamAdminURL.'/'.$teamClass.'/EditForm/field/'.$teamClass.'/item/';       

          foreach($teams as $team)
          {
            $links .= '<a href="'.$teamEditAdminURL.$team->ID.'/edit">Edit '.$team->Title.'</a><br/>';
          }
      }

      return $links;
    }
));
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(数组(
“团队链接”=>“编辑团队”
));
$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(数组(