отображать вид как всплывающее окно в codeigniter, когда используется библиотека аутентификации танка

Я разрабатываю блог в codeigniter, используя библиотеку аутентификации танков (скачивается из сети).

Как вы знаете, в блоге есть кнопка «Нравится/не нравится». При нажатии на кнопку «Мне нравится» (страница просмотра) сначала управление передается контроллеру, где проверяется, вошел ли пользователь в систему или нет, если пользователь вошел в систему, то управление передается обратно главная страница блога и блог понравились (т.е. счетчик лайков увеличивается), но, если пользователь не вошел в систему или не является членом сообщества, отображается форма входа/регистрации.

Все эти функции встроены в библиотеку аутентификации танка, если она работает нормально.

Проблема: я хочу, чтобы, если пользователь не вошел в систему или не является участником, то какая бы страница ни отображалась (вход/регистрация/забыли пароль/отправить электронное письмо снова), они должны открываться во всплывающем окне при нажатии кнопки «Нравится/не нравится».

Проделанная работа: использовалась всплывающая функция привязки, но бесполезно. Результат: он отображает вид в новом окне

Размещен вид формы входа/регистрации на той же странице блога, используется функция jquery (нарастание, исчезновение) и т. д. для отображения всплывающего окна. Результат: всплывающее окно отображается, но поскольку это всплывающее окно не исходит от контроллера, оно бесполезно (поскольку функция библиотеки аутентификации резервуара не задействована).

Поэтому, если возможно, помогите мне отобразить представление (вызывается из контроллера как всплывающее окно). Если возможно, пришлите несколько правильных ссылок или любой демонстрационный проект. Есть функция jquery-fancy box, думаю, сработает. Я знаю, что проблема будет решена путем применения концепции потока jquery + mvc, но, поскольку я новичок в php, а также в codeigniter, поэтому я не могу правильно интегрировать свои мысли.

Заранее спасибо.


person zaya    schedule 11.09.2013    source источник
comment
модальные бутстрапы должны помочь   -  person Kyslik    schedule 11.09.2013
comment
как в этом задействован бутстрап?   -  person zaya    schedule 11.09.2013
comment
Модель bootstraps представляет собой всплывающую разметку, ее легко использовать, вы можете проверить ее здесь getbootstrap.com/2.3.2/javascript.html#modals Я знаю, что это далеко от вашего проекта, если вы вообще не используете загрузку, но пересматриваете свои варианты.   -  person Kyslik    schedule 11.09.2013


Ответы (1)


Используйте Fancybox, ваша проблема будет решена. [Скачать] сначала пакет. Затем включите CSS и JS в свой шаблон.1

Использование:

<a href="<?=base_url()?>home/login/" class="fancybox">Login</a>
$(function(){
    $(".fancybox").fancybox({
        type        : 'iframe',
        autoSize : false,
        width    : "60%",
        height   : "56%",
        'scrolling'     : 'no',
        'titleShow'     : false,
        openEffect  : 'fade',
        closeEffect : 'fade'
    });
});

РЕДАКТИРОВАНИЕ
Изменения:
добавлен класс fancybox в ссылку.

<a href="<?php echo base_url()?>index.php/blog/ajax_dislike/?dislikeid=<?php echo $row ->id;?>" class="fancybox">Dislike</a>

Обязательно включает в раздел <head> индексной страницы:

<script type="text/javascript" src="<?=base_url()?>js/jquery-1.9.1.js"></script>
<link rel="stylesheet" href="<?=base_url()?>css/fancybox/jquery.fancybox.css" />
<script type="text/javascript" src="<?=base_url()?>js/jquery.fancybox.js"></script>

Теперь на странице в разделе <head> включите это после того, как указано выше:

<script type="text/javascript">
$(function(){
    $(".fancybox").fancybox({
        type        : 'iframe',
        autoSize : false,
        width    : "60%",
        height   : "56%",
        'scrolling'     : 'no',
        'titleShow'     : false,
        openEffect  : 'fade',
        closeEffect : 'fade'
    });
});
</script>
person Nil'z    schedule 11.09.2013
comment
где я должен написать функцию fancybox(), на странице просмотра, откуда я вызываю контроллер (указав ссылку в href, как сказано выше), или на странице просмотра формы входа. - person zaya; 12.09.2013
comment
В вашем файле просмотра. Включите в представление также Jquery.js, fancybox.js и fancybox.css. - person Nil'z; 12.09.2013
comment
это не мой вопрос, я спрашиваю, в какой файл просмотра я должен его включить. У меня много файлов просмотра. Один файл просмотра, из которого я вызываю свой контроллер или файл просмотра страницы входа. Есть ли проблема, что fancy box поддерживается только некоторыми версиями jquery. - person zaya; 12.09.2013
comment
Включите в представление, где вы будете размещать тег <a>, нажав на который вы хотите открыть всплывающее окно. См. документацию fancybox для получения дополнительной информации об этом. На мой взгляд включить последнюю версию Jquery - person Nil'z; 12.09.2013
comment
это снова возвращение к исходной истории, это структура mvc, которую вы знаете. Тег ‹a› будет помещен в один файл представления (index.php, который будет вызывать контроллер), другая страница просмотра - это login.php.... который имеет для отображения во всплывающем окне. Теперь, где я должен разместить код jquery в index.php (который будет вызывать контроллер) или login.php (который должен отображаться как всплывающее окно). Пожалуйста, ответьте (если возможно, то с правильным примером), это срочный проект... спасибо - person zaya; 12.09.2013
comment
Я пробую ваш код fancybox с утра, но проблема еще не решена. - person zaya; 12.09.2013
comment
Пожалуйста, опубликуйте свое мнение в своем вопросе еще раз. - person Nil'z; 12.09.2013
comment
который из? просмотр индексной страницы или просмотр страницы входа? - person zaya; 12.09.2013
comment
Выложи оба, так будет лучше - person Nil'z; 12.09.2013
comment
на моей индексной странице: ‹a href=‹?php echo base_url()?›index.php/blog/ajax_dislike/?dislikeid=‹?php echo $row -›id;?››Dislike‹/a› при нажатии эта функция с именем ajax_dislike контроллера блога вызывается, если пользователь не вошел в систему, управление передается функции входа в систему контроллера аутентификации. Вся аутентификация происходит через библиотеку аутентификации танка. Эта функция входа в систему контроллера аутентификации загружает страницу просмотра, которая содержат форму входа (другая страница просмотра). Все это работает нормально, теперь я хочу, чтобы эта страница входа отображалась как всплывающее окно. Теперь, где я должен разместить вашу функцию jquery и как она работает - person zaya; 12.09.2013