Проблемы со чтением данных из частей шаблона Codeigniter и с перенаправлением контроллера

У меня есть две несвязанные проблемы с Codeigniter:

(a) Я пытаюсь перенаправить пользователя на панель инструментов после успешного входа в систему. то есть от контроллера «auth» до контроллера «dashboard». По какой-то странной причине он продолжает перенаправлять на auth/dashboard (ошибка 404, поскольку он не существует).

Вот что я сделал:

//Within the auth controller    
    if ($this->auth->login($username, $password)) //Auth->login returns boolean
    {
    redirect('/dashboard', 'refresh');
    # redirect('/dashboard', 'location');  // I tried this too
    # redirect('/dashboard/index', 'refresh');   // I also tried this!
    }

Что я делаю не так, пожалуйста? Он просто продолжает перенаправлять на auth/dashboard

(b) Я использую великолепную библиотеку шаблонов Codeigniter от Фила Стерджена (без синтаксического анализатора) и не могу получить данные, отправленные в файл партиалов. Эти данные нужны ТОЛЬКО для файла partials. Я просмотрел (к сожалению, скудную) документацию библиотеки, сообщения S/O по теме, а также форумы CI безрезультатно, кажется, нет четкого примера, показывающего, как партиал получает данные, которые ему назначает контроллер. .

Вот как я это делаю. Пожалуйста, скажите мне, что я должен делать неправильно.

// In the controller page
$this->data['user'] = array('info' => 'username', 'value' => 'Cogicero');
$this->data['prefs'] = array('foo' => 'bar');
$this->template
     ->set_partial('header', 'partials/header', $this->data)
     ->set_layout('blog')
     ->build('foobar_view');

И

        //In the header partials page
        <?php
        /* snip */
        print_r($data);
        print_r($prefs);
        print_r($user);
        echo $user["info"];
        echo $prefs["foo"];
        ?>

Все вышеперечисленное приводит к ошибкам «массив не существует» или «неопределенная переменная»! Как я должен получать данные в файле частичного представления?

Спасибо

РЕДАКТИРОВАТЬ: Работая в сжатые сроки, поэтому, не предвидя решения, мне пришлось отказаться от библиотеки шаблонов Фила Стерджена и вместо этого выбрать Jens Segers. http://www.jenssegers.be/blog/25/Codeigniter-template-library Это немного похоже на Фила, но по какой-то причине партиалы правильно получают и отображают мои данные. Кроме того, библиотека шаблонов Sergers очень хорошо документирована. Теперь все в порядке, поэтому я приму свой собственный ответ на проблему (а). Спасибо всем.


person Cogicero    schedule 03.09.2012    source источник
comment
Спасибо, Брендан. Но на самом деле это логический вывод функции входа в систему. Кроме того, часть else работает очень хорошо. Проблема здесь в том, почему панель инструментов используется как метод, а не как контроллер.   -  person Cogicero    schedule 03.09.2012
comment
Снимите предыдущую косую черту с приборной панели. Кроме того, я бы использовал перенаправление заголовка (местоположения) вместо обновления. Кроме того, вам не нужно явно указывать местоположение.   -  person Brendan    schedule 03.09.2012
comment
Да, пробовал и без косой черты, и без метода редиректа (ни рефреш, ни локация). Не повезло :(   -  person Cogicero    schedule 03.09.2012
comment
что касается доступных переменных, попробуйте использовать print_r( get_defined_vars() ) :)   -  person Cristian    schedule 03.09.2012
comment
Можете ли вы опубликовать метод входа в библиотеку авторизации?   -  person Brendan    schedule 03.09.2012
comment
Спасибо, Сник. Я только что использовал ваш код для перебора всех переменных (чертовски много здесь благодаря CI). Всех, кого я отправил (как указано выше), нигде нет, это сумасшествие. :(   -  person Cogicero    schedule 03.09.2012
comment
Привет снова Брендан. Я использую код Бена Эдмунда Ion Auth. Я не хотел отвлекаться от темы вопроса, ссылаясь, в частности, на Ion Auth (поскольку я чувствовал, что это проблема перенаправления). Ну вот, метод входа здесь: github. com/benedmunds/CodeIgniter-Ion-Auth/blob/2/controllers/   -  person Cogicero    schedule 03.09.2012
comment
@Cogicero Можете ли вы опубликовать код контроллера /dashboard и содержимое конструктора, если таковые имеются.   -  person Deepak    schedule 04.09.2012
comment
Привет, Дипак, спасибо, я обнаружил, что проблема в моем конфигурационном файле. Что касается другой проблемы с партиалами, я пока не знаю.   -  person Cogicero    schedule 06.09.2012


Ответы (1)


(a) Итак, после долгих возни я решил первую проблему, то есть перенаправления.

В конфигурационном файле имеем

| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url']=

По-видимому, я не установил базовый URL-адрес, потому что я все еще нахожусь на локальном сервере разработки, я собирался установить его на адрес www при загрузке на тестовый сервер. Codeigniter все это время догадывался, но догадка не сработала для моих переадресаций аутентификации. Я установил базовый URL-адрес, и все перенаправления были в порядке.

(б) Теперь, чтобы понять, почему частичные представления не получают данные. Любая помощь, пожалуйста? :(

person Cogicero    schedule 05.09.2012