Пример #1
0
 public function testAddErrorTemplateDefault()
 {
     $expected = ['key' => 'foo', 'defaultTemplates' => [], 'errorTemplates' => ['404' => 'template404', 'default' => 'template']];
     $theme = new Theme();
     $theme->setKey($expected['key']);
     $theme->addErrorTemplate('default', 'template');
     $theme->addErrorTemplate('404', 'template404');
     $this->assertEquals('template404', $theme->getErrorTemplate(404));
     $this->assertEquals('template', $theme->getErrorTemplate(500));
     $this->assertEquals($expected, $theme->toArray());
     $this->assertEquals($expected['errorTemplates'], $theme->getErrorTemplates());
 }
Пример #2
0
 private function generateErrorTemplates(Theme $theme)
 {
     $defaultErrorTemplates = 0;
     foreach ($this->xpath->query('/x:webspace/x:theme/x:error-templates/x:error-template') as $errorTemplateNode) {
         /* @var \DOMNode $errorTemplateNode */
         $template = $errorTemplateNode->nodeValue;
         if (($codeNode = $errorTemplateNode->attributes->getNamedItem('code')) !== null) {
             $code = $codeNode->nodeValue;
         } elseif (($defaultNode = $errorTemplateNode->attributes->getNamedItem('default')) !== null) {
             $default = $defaultNode->nodeValue === 'true';
             if (!$default) {
                 throw new InvalidDefaultErrorTemplateException($template, $this->webspace->getKey());
             }
             ++$defaultErrorTemplates;
             $code = 'default';
         } else {
             throw new InvalidErrorTemplateException($template, $this->webspace->getKey());
         }
         $theme->addErrorTemplate($code, $template);
     }
     // only one or none default error-template is legal
     if ($defaultErrorTemplates > 1) {
         throw new InvalidAmountOfDefaultErrorTemplateException($this->webspace->getKey());
     }
     return $theme;
 }