2017-11-20 1 views
0

Wie kann ich Felder in fields.yaml hinzufügen, aber verhindern, dass sie zu einem beliebigen Formular hinzugefügt werden. Ich möchte diese Felder nur mit der Methode 'formRenderField' hinzufügenOctoberCMS benutzerdefinierte Felder im Back-End hinzufügen

+0

Ich verstehe Ihre Frage nicht. Wenn Sie kein Feld zu einem Formular hinzufügen möchten, fügen Sie es einfach nicht in die 'fields.yaml' Datei ein. Möchten Sie das Feld in der Form anzeigen oder nicht? – Meysam

Antwort

0

Ich denke, wenn Sie sie erweitern möchten, dann können Sie direkt in "fields.yaml" -Datei schreiben und erstellen Sie verschiedene Version davon und verwenden Sie sie auf Formular basieren auf Bedingungen

<?php namespace Acme\Blog\Controllers; 

    class Categories extends \Backend\Classes\Controller 
    { 
     public $implement = ['Backend.Behaviors.FormController']; 

     public $formConfig = 'form_config.yaml'; 
    } 

das ist normal Ansatz

aber Sie können in Konstruktor setzen Zustand Konfigurationsdatei

public __construct() { 

     // if condition is true then use this config otherwise use regular one 
     if(condition) { 
      $this->formConfig = 'modified_form_config.yaml'; 
     } 

    } 

andere ein sich ändern NSATZ ist Formen auf Bedingungen basieren auszudehnen, wie:

 UsersController::extendFormFields(function($form, $model, $context){ 

     if (!$model instanceof UserModel) 
      return; 

     $form->addFields([ 
      'store' => [ 
       'label'=> 'Store', 
       'type'=>'relation', 
       'nameFrom'=> 'name' 
       ], 
      ]); 

    }); 

Sie diesen Code in Plugin schreiben kann Boot- Methode

wir hier Felder hinzufügen, wenn Usercontroller genannt wird und nur dann, wenn es versucht, Render UserModel Modell.

Wenn Sie einige benutzerdefinierte Szenarien benötigen, beschreiben Sie bitte mehr, damit wir Ihnen besser helfen können.

Verwandte Themen