stephen-makrogianni
1/30/2019 - 1:30 AM

Modify actions on gridfield records

<?php

namespace ProjectName\Admins;

use ProjectName\Check\Models\Status;
use SilverStripe\Admin\ModelAdmin;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;

class StatusAdmin extends ModelAdmin
{
  private static $managed_models = array(Status::class);
  private static $url_segment = 'status';
  private static $menu_title = 'Statuses';

  public function getEditForm($id = null, $fields = null)
  {
    $form = parent::getEditForm($id, $fields);
  
    // Get the gridfield, remove the delete action(unlink) and add another with delete.
    $gridFieldName = $this->sanitiseClassName($this->modelClass);
    $gridField = $form->Fields()->fieldByName($gridFieldName);
  
    if ($gridField) {
      $gridField->getConfig()->removeComponentsByType(GridFieldDeleteAction::class);
      $gridField->getConfig()->addComponent(new GridFieldDeleteAction(false));
    }

    return $form;
  }
}