2016-07-27 15 views
3

Was ist der einfachste Weg zum Bearbeiten der Standard-Erfolgsmeldung beim Speichern eines Elements in der GridField-Bearbeitungsansicht?SilverStripe edit gridfield success Nachricht beim Speichern

Die Nachricht scheint in einer Variablen in Klasse GridFieldDetailForm innerhalb der Methode doSave zu sein.

$message = _t(
     'GridFieldDetailForm.Saved', 
     'Saved {name} {link}', 
     array(
      'name' => $this->record->i18n_singular_name(), 
      'link' => $link 
     ) 
    ); 

Antwort

3

Da die Nachricht die _t() Funktion verwendet wird versucht, den Wert zu holen in der lang-Datei auf das Gebietsschema des aktuellen Benutzers entspricht, definiert. Die Standardzeichenfolge, die in der Funktion definiert ist, ist nur ein Fallback, wenn in den lang-Dateien keine Übersetzung gefunden werden konnte.

Um die Nachricht zu ändern Sie Ihre Website yml lang Datei in mysite/lang/{LANGUAGE_CODE}.yml entsprechend anpassen können

Für Englisch dies wäre:

# mysite/lang/en.yml 
# remember to flush after editing me :-) 
en: 
    GridFieldDetailForm: 
    Saved: 'My custom message using {name} and here is a link to the object: {link}' 

https://docs.silverstripe.org/en/3.4/developer_guides/i18n/

+0

Prost Janne, aber ich muss die eigentliche Nachricht ändern, um zum Beispiel neue Variablen anstelle von {Name} und {link}, es ist in diesem Fall notwendig, mehr als nur die Übersetzung zu ändern. – Faloude

2

So etwas sollte für bestimmte Implementierungen arbeiten

$form = $gridField->getConfig()->getComponentByType('GridFieldDetailForm'); 
$form->setItemEditFormCallback(function($form, $itemRequest) 
{ 
    // Replace save action with custom method in here 
}); 

Für allgemeinere Implementierungen möchten Sie wahrscheinlich GridFieldDetailForm erweitern und doSave überschreiben und dann die GridFieldDetailForm Komponente durch Ihre benutzerdefinierte Klasse ersetzen.

Verwandte Themen