2013-10-24 2 views
0

В настоящее время я занимаюсь разработкой сайта SilverStripe и до сих пор так хорош - я настроил контроллер и некоторые модели, и все хорошо там, m с проблемой создания системы входа в систему.Управление входами только на фреймворк только сайт SilverStripe

Кажется, что переменная $Form, которая обычно отображает форму входа, когда вы посещаете /admin, ничего не отображает. Должно ли это? Я думал, что это будет, однако это не так.

Я догадываюсь, что мой вопрос в том, что только в рамках сайтов только форма для входа в систему используется, и если да, то каковы первые шаги по устранению неполадок, почему форма не отображается на моем сайте? Может ли это что-то делать с маршрутами?

Вот мой код:

Routes.yml

--- 
Name: app 
After: 'framework/routes' 
--- 
Director: 
    rules: 
    '': 'GanttController' 
    '$URLSegment//$Action/$ID/$OtherID': 'GanttController' 

GanttController.php

<?php 

class GanttController extends BaseController { 

    public function index() { 
     return $this->customise(new ArrayData(array(
      'Title' => 'Gantt Chart' 
     )))->renderWith(array(
      'GanttController', 
      'Page' 
     )); 
    } 

Page.ss

<html> 
    <head> 
     <title>$Title</title> 
    </head> 
    <body> 
     <div class="header"> 
      <h1>Gantt</h1> 
     </div> 
     <div class="pane"> 
      $Layout 
      $Form 
     </div> 
    </body> 
</html> 

Если добавить строку 'admin': 'AdminRootController' в мой YAML маршрутов и перейдите к /admin, вместо этого загрузите мой проект, загрузив страницу get started with the SilverStripe framework, где он свяжет вас с документами по добавлению контроллеров/шаблонов.

ответ

0

framework должен отображать $ Form, учитывая, что у вас есть шаблон, который его использует.

каркас еще разработан, чтобы иметь внешний интерфейс, это означает, что 2-х вещей:

  1. рамки будут использовать шаблоны/Page.ss в качестве шаблона по умолчанию для интерфейса, как обычно
  2. если вы хотите админ/или форма secuirty Логин, вы должны получить доступ к этому контроллеру
    вы можете сделать это 3 способами:
    • к нему доступ через уже существующий маршрут: /admin или /Security/login?backURL=/the/url/to/redirect/to/after/login
    • использовать HTTP перенаправления сделать / перенаправлять /admin
    • , если вы не хотите фронтэнда вообще, вы просто использовать Page.ss для шаблона логина и сделать /, чтобы показать то же самое, /admin на assiging маршрут / к AdminRootController со следующей конфигурации YML:

Файл: MySite/_config/routes.yml

--- 
Name: mysiteroutes 
Before: '*' 
After: 
    - '#rootroutes' 
    - '#coreroutes' 
    - '#modelascontrollerroutes' 
    - '#adminroutes' 
--- 
Director: 
    rules: 
    '': 'AdminRootController' 

Если это не отвечает на ваш вопрос, и вы по-прежнему не можете получить форму для отображения, вставьте свой код (ваши настройки маршрута, ваш Page.ss и любой соответствующий Контроллер, который у вас может быть).

+0

См. Мое редактирование для моей конфигурации маршрута и т. Д. – danbroooks

+0

hmm, шаблон выглядит нормально. что вы видите, если вы посещаете '/ Security/login', также попробуйте создать файл' templatex/Secuirty.ss' с '$ Form', таким образом SilverStripe должен использовать этот шаблон вместо' Page.ss' для формы входа. (также, не забудьте '? flush = 1') – Zauberfisch

+0

не должно быть' Security :: permissionFailure() 'в индексе контроллера или где-нибудь, так что SilverStripe знает, что для этого нужен вход для доступа? В противном случае форма входа не будет отображаться? – colymba

Смежные вопросы