DbHelp.ru
Маленький Yii блог
Комментарии
Гость: Подробная i188 инструкция. j236 Бланк на закрытие ип 2017 пре...
Гость: На сегодняшний день загородный дом по уровню комфорта ...
Гость: Я, вам завидую. Ваш блог намного лучше по содержанию и д...
Гость: Подробная i625 инструкция. p957 Бланк для закрытие ип 2017 пр...
Гость: смотреть порно зоофилы курительные смеси спайс зоо ...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

Messager + jQuery

Рубрика: Компоненты

Оцените эту статью:

Рейтинг: 0.00 (0)
5 Апр. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.rumessagerНадо было мне как то выводить сообщения об ошибках на экран. Использовать исключения - плохой подход. Поэтому для того чтобы сообщать пользователям об ошибке - я решил написать небольшой виджет. 

Принцип работы его очень простой. Он должен принимать в себя - цвет сообщения, заголовок и текст ошибки. Для того чтобы красиво отображать - я решил использовать вместе с этим jQuery.

---

Первым делом войдите в папку protected/components и создайте файл Messager.php с текстом:

/**
 * Messager class file
 *
 * @author Alekseenko Timur <[email protected]>
 * @link http://www.dbhelp.ru/
 * @copyright Copyright 2009
 */

class Messager extends CWidget
{
    public $title = "Ошибка!";
    public $msg   = "";
    public $color = "#FFCCCC";
    
        public function init()
        {
            if (!empty($this->msg))
            $this->render('messager');
        }
        
        public function create($date = array())
        {
            if (!empty($date['title'])) {
                $this->title = $date['title'];
            }
            if (!empty($date['msg'])) {
                $this->msg = $date['msg'];
            }
            if (!empty($date['color'])) {
                $this->color = $date['color'];
            }                
        }
        
        public function returnConfig()
        {
            return array('title' => $this->title, 'msg' => $this->msg, 'color' => $this->color);
        }
}

После этого тамже создайте папку views если её у вас там нету и создайте там файлик messager.php, он будет служить отображением для виджита:

<div class="neat" style="background: <?=$this->color;?>;">
<b><?=$this->title;?></b><br><br>
<?=$this->msg;?>
</div>

<script>
$(".neat").animate({ opacity: "show" }, "slow");
</script>

Я естественно полагаю что вы умеете подключать jQuery. Теперь для того что б окошко сообщения выглядело красиво - добавим маленький css код в ваш общий css или в отображение:


div.neat {
    display: none;
    clear: both;
    margin: 1em 0;
    padding: 1em 15px;
    background: #FFCCCC;
}

Вот в принципе и все. Теперь когда мы хотим вызвать сообщение об ошибке на экран - в отображении мы просто пишем:


<?php $this->widget('Messager', array('title' => "Ошибка!",
                                      'msg'   => "Текст ошибки",
                                      'color' => "#color" )); ?>

Вот в принципе и все. Текст и цвет ошибки вы можете передавать к примеру с контроллера как это делаю я. Всё очень удобно, рекомендую и вам.

Как работает данный скрипт вы можете посмотреть на странице "Регистрация". Для этого вам надо быть авторизированным.



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Я обычно часто просматриваю гугл сообщества в поисках чего-то нового (статьи, вопросы) и сам являюсь активным участником групп по ... "Сообщество Google"

  2. Вас смущает капча на вашем сайте? Так давайте сделаем её сложнее... В этом уроке мы поговорим про интеграцию с ... "Усложняем стандартную капчу, при помощи reCaptcha"

  3. Раздел "Документации"  был пополнен интересной заметкой. Пользователь Sebastián Thierer предоставил так называемую "шпаргалку" по часто используемым методам и приёмам ... "Yii Шпаргалка"

Blake-R

Было сказано: Вторник, 14 Апрель 2009

>> Я естественно полагаю что вы умеете подключать jQuery.

А, может, интереснее было бы в самом классе Messager подключать через clientScript?

[adm] zolter

Было сказано: Вторник, 14 Апрель 2009

А что если пользователь до этого подключил в layouts.
Тогда если и компонент будет подключать - то получится два jquery вызова на странице =)

[guest] n1ck

Было сказано: Пятница, 12 Июнь 2009

вот кругом читаю, вроде бы как сам php код в норме, но отношение к структуре html - полный ппц, то теги не закрыты умышленно, br br вместо нижнего margin для элемента, то стили инлайново прописаны style="background: <?=$this->color;?>;", то script высыпается тупо в тело страницы...

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

-date: message (в одну строку)

а другому

-date
-message (в две строки)

то по такому подходу, мы проверим что это за пользователь в модели, а потом выведем пару br либо не выведем.

Вместо того, чтобы подключить отдельный css для каждого класса, генерится комок кода делающий примитивную функцию, но занимающий 20 строк. Это определенно адвансед, надо пойти осознать...

[adm] zolter

Было сказано: Пятница, 12 Июнь 2009

to n1ck
понимаешь я html-у в принципе в этом блоге не учу. Я рассказываю вам про Yii и о том что мне пригодилось когда его ковырял. Если вас раздражают умышлено незакрытые теги (что совершенно не нарушает спецификацию языка html от w3) то причем тут я?. По какому принципе вы действуете закрывая теги? так захотелось? а я прочитал спецификацию, посмотрел примеры, и понял что w3 наоборот прапогандирует не закрытие тегов которые в этом не нуждаются. посмотрите для этого любой из примеров, и покажите мне где закрывают теги tr, td (http://www.w3.org/TR/html401/struct/tables.html). Или у вас есть основания не доверять w3? Я опять таки говорю, я пишу на html, а не на xhtml (который по спецификации требует закрытия всех тегов). Если вам не по душе такой подход - не надо его навязывать мне, и выставлять его еще и как "полный ппц по отношению к структуре html".

Далее, по поводу css и тп. Мне и так есть о чем писать кроме как рассказывать еще какие стили и куда указывать. Безусловно получить полностью готовый и красивый продукт - приятно, но у меня не так. Я не учу вас html-у, css-у и тп. Я рассказываю про php и yii, поэтому отвлекаться на стили и тп - не собираюсь. Вы получаете готовый пример реализации на yii, как он будет выглядеть визуально у вас - только ваше дело.

[adm] zolter

Было сказано: Пятница, 12 Июнь 2009

Угодить всем я не пытаюсь, поэтому могу только извинится за такой стиль программирования. :)

И кстати, я в принципе не верстальщик (и вообще этим делом не увлекаюсь) поэтому на правильности прописания (или не прописания) своих стилей я не настаиваю. Я не против если вы напишите корректировки к статьям которые вам не понравились в плане стилей/br-ов - и я с радостью подучусь на вашем примере сам, да и откорректирую статью согласно вашим поучениям. :)

[guest] Ponf

Было сказано: Пятница, 12 Июнь 2009

>> Я естественно полагаю что вы умеете подключать jQuery.

Хорошо, что Вы так полагаете, но тем не менее, те, кто не умеет где этому могут научиться?)))

[adm] zolter

Было сказано: Пятница, 12 Июнь 2009

Постараюсь в ближайшие дни написать статью как правильно подключать JS скрипты и CSS через Yii. А пока что можете просто почитать маленьку тему на форуме (http://www.yiiframework.ru/forum/viewtopic.php?f=3&t=95) и сделать примерно так как описано в примере там :)

[guest] Гость

Было сказано: Пятница, 12 Июнь 2009

Я так понял, что дело даже не в учить или не учить CSS, а дело в полном отсутствии разделить код от представления. Если этот момент наглядно в мануале (а ваша статья на это и претендует) принебрегается, то как можно переходить к следующему усложнению архитектуры с тремя волшебными буквами MVC.
Мы используем всю мощь php5 и при этом пишем ахинею, уж извините. Это в стиле иметь в руках бензопилу, но по-старинке применять ее как топор - не включая рубить ударами.

Верстальщик или нет... w3c..

xhtml 1.0 strict - это не что-то альтернативное html 4.0 -ю, а это непосредственно работа консорциума над своими ошибками и говорить, мол я предпочитаю html 4.0 - несколько некорректно, он себя изжил также как карбюраторный двигатель и все кто от него ушел об этом ни разу не жалеют. Я не буду толкать свою позицию, но не за горами html5 - очередная работа над ошибками и принятие новых более красивых решений.

ps: не всегда стандарты нужно слушать, microsoft (а именно их браузер номер один на сегодня к сожалению) с завидной регулярностью клал на стандарты и приходится это учитывать.

А стремиться кодить на php5 в максимально современном стиле не закрывать тег - это как-то противостоит дург-другу. имхо

[adm] zolter

Было сказано: Пятница, 12 Июнь 2009

Ну в принципе ваши слова в чем то имеют смысл :)
Ладно, в будущем буду учить хорошему, а не как халтурить с html4 :)

[guest] Гость

Было сказано: Суббота, 31 Октябрь 2009

Можно ли вызвать мессадж после некоего ajax запроса? Если Да, то как? Допустим, такая ситуация: добавление комментария происходит через Ajax и надо вывести по результату этот информ блок.

[adm] zolter

Было сказано: Суббота, 31 Октябрь 2009

Конечно. Я правда незнаю как именно у вас сделана отправка комментариев, но в большенстве случаев это будет выглядеть вот так:

<?php echo CHtml::ajaxSubmitButton (
"OK",
CController::createUrl('admin/addcountry_ajax'),
array('success' => 'function(a){ alert("Ваше сообщение"); }')
)

[guest] Гость

Было сказано: Вторник, 31 Январь 2017

guest test post
[url=http://googlee.te/]bbcode[/url]
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Четверг, 23 Февраль 2017

guest test post
[url=http://googlee.te/]bbcode[/url]
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Воскресенье, 26 Февраль 2017

guest test post
[url=http://googlee.te/]bbcode[/url]
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Суббота, 04 Март 2017

guest test post
[url=http://googlee.te/]bbcode[/url]
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Вторник, 14 Март 2017

guest test post
[url=http://googlee.te/]bbcode[/url]
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Воскресенье, 26 Март 2017

guest test post
[url=http://googlee.te/]bbcode[/url]
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Среда, 14 Июнь 2017

http://rufifa.info

Оставить комментарий


Код:
Имя: