Esempio n. 1
0
 /**
  * Modify an already defined field
  * @param  string $name   Name of the field
  * @param  array|\Closure  $modify Array of field configs or a closure that accepts
  * a FieldsBuilder and returns a FieldsBuilder.
  * @throws ModifyFieldReturnTypeException if $modify is a closure and doesn't
  * return a FieldsBuilder.
  * @throws FieldNotFoundException if the field name doesn't exist.
  * @return $this
  */
 public function modifyField($name, $modify)
 {
     if (is_array($modify)) {
         $this->getFieldManager()->modifyField($name, $modify);
     } elseif ($modify instanceof \Closure) {
         $field = $this->getField($name);
         // Initialize Modifying FieldsBuilder
         $modifyBuilder = new FieldsBuilder('');
         $modifyBuilder->addFields([$field]);
         /**
          * @var FieldsBuilder
          */
         $modifyBuilder = $modify($modifyBuilder);
         // Check if a FieldsBuilder is returned
         if (!$modifyBuilder instanceof FieldsBuilder) {
             throw new ModifyFieldReturnTypeException(gettype($modifyBuilder));
         }
         // Build Modifications
         $modifyConfig = $modifyBuilder->build();
         // Insert field(s)
         $this->getFieldManager()->replaceField($name, $modifyConfig['fields']);
     }
     return $this;
 }