AuthComponent не доступен в определенном контроллере? - PullRequest
0 голосов
/ 20 февраля 2012

Я написал свое приложение для торта, чтобы регистрировать зарегистрированных пользователей, и оно прекрасно работает на страницах просмотра, где есть модель БД, связанная с пользователем.Однако на моих главных страницах, которые не обязательно обращаются к какой-либо модели (PagesController, где страницы - это такие вещи, как предстоящие события, свяжитесь с нами, о и т. Д.), AuthComponent недоступен или, по крайней мере, массив возвращает пустой ---поэтому я не могу получить, скажем, имя пользователя человека, вошедшего в систему.

Я попытался создать модель под названием Страница, которая принадлежит Пользователю, но это не решило мою проблему.

Чтобы объяснить немногокроме того, мое приложение отображает списки определенных типов жилья, ночных клубов, ресторанов и вещей, которые можно сделать для данного города, и все это отображается независимо от того, вошел пользователь в систему или нет.Я не понимаю, где я ошибаюсь и почему.

Вот мой AppController:

<?php
class AppController extends Controller {
 public $components = array(
    'Session',
    'Auth' => array(
        'loginRedirect' => array('controller' => 'users', 'action' => 'view'),
        'logoutRedirect' => array('controller' => 'pages', 'action' => 'index')
    )
);


function beforeFilter() {
    $this->Auth->allow('login', 'logout','index', 'view', 'condos', 'houses', 'hotels_and_motels', 'print_all_coupons', 'print_coupon', 'search', 'golf', 'charters', 'events', 'nightlife', 'shopping', 'visitors_info', 'contact_us');

}
}
?>

здесь я получаю доступ к своему имени пользователя в макете страницы по умолчанию:

<?php if(AuthComponent::user('id')) {
        echo '<span style="font-variant:small-caps">Hello, '.AuthComponent::user('username').'</span> | ';
?>

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Я нашел ответ после нескольких недель стучать головой об стену по этому поводу.И о, ты будешь смеяться.Для любого из вас, кто сталкивается с этой проблемой, ответ ..... убедитесь, что нет пробелов до или после ваших тегов.Это все.Шутки в сторону.Поскольку PHP печатает все, что не входит в тег PHP, если он найдет что-то для отправки, он отправит заголовки раньше всего.После отправки заголовков сеанс PHP не может быть создан.Так что записывайте это в файл с головокружительными головами!

0 голосов
/ 20 февраля 2012

Не видя никакого кода, мой первый инстинкт - сказать, что вы загружаете компонент не в AppController, а только в UsersController.Вы загружаете компонент Auth в AppController?

ОБНОВЛЕНИЕ:

Вот как я хотел бы предложить доступ к информации о пользователе.

$this->Session->read('Auth.User.username');

ОБНОВЛЕНИЕ 2

Удалите объявление $components из контроллера страниц.Это может переопределить сеанс.

ОБНОВЛЕНИЕ 3

Если у вас есть пользовательский контроллер Pages, он, вероятно, конфликтует с контроллером Core Pages.Удалите ваш контроллер страниц и посмотрите, работает ли он правильно.Контроллер Core Pages по-прежнему будет направлять в каталог Views/Pages/ для отображения содержимого.

...