Как разместить формы регистрации и входа в CodeIgniter/TankAuth на одной странице?

Я использую CodeIgniter для своего php-фреймворка и TankAuth для авторизации/регистрации. По умолчанию TankAuth размещает формы регистрации и входа на отдельных страницах. Я хотел бы разместить форму входа в систему на панели навигации, которая появляется на каждой странице. Существует также страница регистрации, на которой форма регистрации будет отображаться одновременно с формой входа в систему (расположена на панели навигации).

В настоящее время я использую это в контроллерах/signup.php .index()...

            $this -> load -> view('templates/header');
            $this -> login();
            $this -> register();
            $this -> load -> view('templates/footer');

Это отображается правильно, но у меня есть две проблемы:

1 Придется ли мне переопределять методы TankAuth в каждом контроллере, который будет иметь форму входа?

2 Когда я пытаюсь зарегистрироваться, он говорит мне, что форма входа также должна быть заполнена. Это явно уловка-22.

(Я извиняюсь, если это слишком специфично для предметной области или расплывчато; я надеюсь, что это имеет смысл для тех, кто работал с фреймворком.)


person sdasdadas    schedule 11.02.2012    source источник


Ответы (2)


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

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

Чтобы просто пройти через это (и я не знаю, какие изменения кода, если они были сделаны вами), сначала вы должны создать свой собственный логин (html), установить форму action="/auth/login".

Логин будет отправлен, ЕСЛИ все ясно, что пользователь вошел в систему, и вы обработаете его таким образом, ОДНАКО, если им не удастся войти в систему, они будут переведены в единую страницу входа (по умолчанию/или измененную), где они могут повторить попытку еще раз.

То же самое должно следовать для регистрации, установите форму action="/auth/register" и дайте ей отправить против контроллера tank auth. Опять же, если регистрация прошла успешно, они просто переместятся куда угодно, в противном случае попадут на одну страницу регистрации.

Используйте исходные представления логин и регистрация в качестве начала того, что вам нужно изменить/обновить.

Tank Auth на самом деле является плагином, который вам нужно модифицировать под свои нужды, его код чистый и понятный, так что просто пройдитесь по нему, чтобы понять, что происходит при входе в систему, что происходит при регистрации, активации д., иначе смешивание вещей ничего не даст. По моему личному опыту работы с библиотекой, я ВСЕГДА модифицировал ее помимо первоначальной настройки только потому, что это просто сделать.

person Jakub    schedule 11.02.2012
comment
Это было не совсем то, что я имел в виду, но это помогло мне больше, чем то, что я изначально искал. - person sdasdadas; 11.02.2012

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

person Youn Elan    schedule 15.11.2012