Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Moduł PnReadConfig zawiera Plugin przygotowany specjalnie dla Controller. Po instalacji w naszym projekcie, będziemy mogli z niego korzystać we wszystkich modułach. Tworzenie prostego modułu przedstawiliśmy w artykule „Tworzenie modułu HelloWorld w Zend Framework 3”, dlatego pominiemy ten temat. Podstawy dotyczące Zend Framework 3 znajdziemy w dokumentacji i książce Zend Framework 3. Poradnik programisty.

Przykładową tablicę, z której będziemy korzystać o nazwie pn_cms należy dodać do głównego katalogu projektu config/autoload/cms.global.php (Listing 1.). Dzięki dodaniu własnego przedrostka przed nazwą cms, mamy pewność, że nie pojawi się w projekcie druga tablica asocjacyjna o takiej samej nazwie. Rozmieszczenie wszystkich plików w artykule zaprezentowano na rysunku 1.

 

Listing 1. Własna konfiguracja w pliku config/autoload/cms.global.php

...
/**

* Informacje ogólne o CMS
* Języki danych w CMS
* Zend Framework 3 kurs

*/
return [
   'pn_cms' => [
      'language' => [
         'pl' => 'pl_PL',
         'en' => 'en_US',
      ],
      'page_type' => [],
      'role' => [
         'admin' => 'Admin',
         'publisher' => 'Publisher',
         'writer' => 'Writer',
         'guest' => 'Guest',
         'locked' => 'Locked'
      ],
   ],
]; 

 

 

Rys. 1. Układ plików użytych w przykładzie Zend Framework 3

Rys. 1. Układ plików użytych w przykładzie Zend Framework 3

 

Moduł zawiera cztery pliki (rys. 1.):

  1. config/module.config.php (Listing 2.)
  2. src/Controller/Plugin/ReadConfigPlugin.php (Listing 3.)
  3. src/Factory/Controller/Plugin/ReadConfigPluginFactory.php (Listing 4.)
  4. src/Module.php (Listing 5.)

 

Controller Plugin pod jaką nazwą ma być dostępny w Controller ustawiamy w pliku module.config.php (Listing 2.).

 

Listing 2. Zawartość pliku config/module.config.php

...
// Zend Framework 3 kurs
namespace PnReadConfig;


return [
   'controller_plugins' => [
     'factories' => [
      'readConfig' => \PnReadConfig\Factory\Controller\Plugin\ReadConfigPluginFactory::class,
     ],
   ],
]; 

 

Listing 3. Zawartość pliku src/Controller/Plugin/ReadConfigPlugin.php

...
// Zend Framework 3 kurs
namespace PnReadConfig\Controller\Plugin;


use Zend\Mvc\Controller\Plugin\AbstractPlugin;

class ReadConfigPlugin extends AbstractPlugin {

   /**
   * @var array
   */
   private $config;

   public function __construct(array $config) {
      $this->config = $config;
   }

   // Pobiera całą konfigurację
   public function all() {
      return $this->config;
   }

   // Pobiera tylko zawartość pliku cms.global.php
   public function cms() {
      return $this->config["pn_cms"];
   }
}

 

Listing 4. Zawartość pliku src/Factory/Controller/Plugin/ReadConfigPluginFactory.php

...
// Zend Framework 3 kurs
namespace PnReadConfig\Factory\Controller\Plugin;


use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;

class ReadConfigPluginFactory implements FactoryInterface {

   public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
   {
      // Pobiera całą konfigurację
      $config = $container->get('Config');

      return new \PnReadConfig\Controller\Plugin\ReadConfigPlugin($config);
   }
}

 

Listing 5. Zawartość pliku src/Module.php

...
// Zend Framework 3 kurs
namespace PnReadConfig;


use Zend\ModuleManager\Feature\ConfigProviderInterface;

class Module implements ConfigProviderInterface {
   public function getConfig()
   {
      return include __DIR__ . '/../config/module.config.php';
   }
}

 

Przykład użycia modułu PnReadConfig zaprezentowano na listingu 6, wynik działania przedstawiono na rysunku 2.

 

Listing 6. Fragment pliku indexController.php

// Zend Framework 3 kurs
// Przekaże całą konfigurację

// var_dump($this->readConfig()->all());

// Przekaże tylko fragment konfiguracji
// zapisanej w tablicy asocjacyjnej pn_cms (rys. 2.)
var_dump($this->readConfig()->cms()); 

 

Rys. 2. Zend Framework 3 Controller Plugin przykład

Rys. 2. Zend Framework 3 Controller Plugin przykład

 

Zaprezentowany moduł w artykule znajdziemy w pliku controller-plugin-module-zf3.zip – kodowanie plików tekstowych UTF-8, znaki końca linii Unix. Moduł PnReadConfig został utworzony w środowisku programistycznym Eclipse PDT.

 

Wybrane książki:

Książki Helion