2016-09-21 2 views
1

Ich habe eine Erweiterung mit Backend-Konfigurationsoptionen. Ich muss eine Telefonnummer in AddAction und UpdateAction validieren. Ich kann das Telefonnummernformat im Backend konfigurieren (sagen Sie uns Telefonnummer/indische Telefonnummer usw.) .Wie kann ich die Einstellungen im Validator abrufen? Ich habe einen benutzerdefinierten Validator zum Telefon zu validieren numbers.Here ist mein CodeEinstellungen in Validator erhalten - typo3

<?php 
    namespace vendor\Validation\Validator; 

    class UsphonenumberValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator 
    { 


     protected $supportedOptions = array(
       'pattern' => '/^([\(]{1}[0-9]{3}[\)]{1}[ ]{1}[0-9]{3}[\-]{1}[0-9]{4})$/' 
     ); 


      public function isValid($property) { 
       $settings = $this->settings['phone']; 
       $pattern = $this->supportedOptions['pattern']; 
       $match = preg_match($pattern, $property); 

       if ($match >= 1) { 
        return TRUE; 
       } else { 
       $this->addError('Phone number you are entered is not valid.', 1451318887); 
        return FALSE; 
       } 

    } 
} 

Einstellungen null

$ gibt
+0

Wo ist Ihre Bestätigung? Sie sagen, Sie benötigen den Wert für die Validierung, aber Ihr Code zeigt keinen Validierungsversuch an. – pduersteler

+0

@pduersteler Ich habe meine Frage aktualisiert –

Antwort

2

In Fällen, in denen die extbase configuration Ihrer Erweiterung ist nicht standardmäßig implementiert, sollten Sie rufen Sie es selbst auf, indem Sie \TYPO3\CMS\Extbase\Configuration\ConfigurationManager verwenden. Hier

ist ein Beispiel, wie Sie die Einstellungen Ihrer Erweiterung erhalten:

<?php 
namespace MyVendor\MyExtName\Something; 

use TYPO3\CMS\Core\Utility\GeneralUtility; 
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager; 
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; 
use TYPO3\CMS\Extbase\Object\ObjectManager; 

class Something { 

    /** 
    * @var string 
    */ 
    static protected $extensionName = 'MyExtName'; 

    /** 
    * @var null|array 
    */ 
    protected $settings = NULL; 

    /** 
    * Gets the Settings 
    * 
    * @return array 
    */ 
    public function getSettings() { 
     if (is_null($this->settings)) { 
      $this->settings = []; 
      /* @var $objectManager \TYPO3\CMS\Extbase\Object\ObjectManager */ 
      $objectManager = GeneralUtility::makeInstance(ObjectManager::class); 
      /* @var $configurationManager \TYPO3\CMS\Extbase\Configuration\ConfigurationManager */ 
      $configurationManager = $objectManager->get(ConfigurationManager::class); 
      $this->settings = $configurationManager->getConfiguration(
       ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, 
       self::$extensionName 
      ); 
     } 
     return $this->settings; 
    } 

} 

Ich empfehle Ihnen, eine solche Funktionalität in der Regel zu implementieren. So könnten Sie jede Konfiguration einer Erweiterung als Service in Ihrer Erweiterung oder etwas Ähnliches abrufen.

Viel Glück!

+0

Vielen Dank für die Lösung –

Verwandte Themen