Я создал плагин под названием «IssueTracker», который находится в app/Plugin/IssueTracker
. Я создал контроллер под названием Tickets
, и он доступен по адресу www.example.com/issue_tracker/tickets/
. Но только для зарегистрированных пользователей с рейтингом «Admin».CakePHP 2.3 Плагин, похоже, не расширяет приложение.
Это было не совсем то, что я надеялся, так что я добавил в моем Plugin/IssueTracker/Controller/TicketsController.php
следующее:
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('index');
}
Я надеялся, что этот кусок кода (который я использую в нескольких других контроллеров в мой app/Controller/
, что он унаследует от моего AppController.php
файла файл TicketsController.php
расширяет IssueTrackerAppController
(как это):.
class TicketsController extends IssueTrackerAppController {
//functions goes in here
}
И в моих Plugin/Controller
папку я создал файл IssueTrackerAppController
, который распространяется на AppController
.
В моем файле AppController.php
я уже определил, что 'index'
и 'view'
являются публичными действиями. Но по какой-то причине он не работает в моем плагине.
Есть ли что-то, что я наблюдаю? Когда я обращаюсь к www.example.com/issue_tracker/tickets
в качестве неавторизованного пользователя (гостя), он говорит мне, что мне нужно войти в систему. Если я зарегистрирован как пользователь, но не как администратор, то компонент Auth
не разрешит мне и не представит регистрационную форму.
Должен быть способ получить Auth
, работающий в плагине, не так ли?
EDIT
Ниже AppController.php
фрагмент кода, где я настроил Auth:
public $components = array(
'Auth' => array(
'loginAction' => array('controller' => 'users', 'action' => 'login', 'plugin' => false),
'loginRedirect' => array('plugin' => false, 'controller' => 'ervaringen', 'action' => 'add'),
'logoutRedirect' => array('plugin' => false, 'controller' => 'ervaringen', 'action' => 'index'),
'authorize' => array('controller'),
'flash' => array(
'element' => 'error',
'key' => 'auth',
'params' => array(
'heading' => 'Waarschuwing!')
),
'authError' => 'Je moet inloggen om deze inhoud te bekijken.',
),
'Session',
'DebugKit.Toolbar'
);
У вас есть функция beforeFilter в файле 'IssueTrackerAppController'? если это так, вам нужно добавить еще один родительский :: beforeFilter(); 'вызов внутри там –
Да, есть. Забыл упомянуть, но это вызывает вызов «parent :: beforeFilter();». – JorickL
Можете ли вы перезаписать параметры компонента, используя beforeFilter? –