{"id":218639,"date":"2014-04-08T12:42:02","date_gmt":"2014-04-08T08:42:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=218639"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=218639","title":{"rendered":"<span class=\"post_title\">\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 fancybox \u0432 yii<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c fancybox-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043d\u0430 yii \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 win-1251. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c, \u0438 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 utf, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a encoding hell, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435. \u0425\u043e\u0442\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u0438 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f.<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0438 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 fancybox.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h5>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c fancybox<\/h5>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <a href=\"http:\/\/www.yiiframework.com\/extension\/fancybox\/\">fancybox<\/a>, \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 extensions. <br \/>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435:<\/p>\n<pre><code class=\"php\">&lt;?php   $this-&gt;widget('application.extensions.fancybox.EFancyBox', array()); ?&gt;<\/code><\/pre>\n<p>  \u0414\u0435\u043b\u0430\u0435\u043c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0441\u0441\u044b\u043b\u043a\u0443, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0448 fancybox:<\/p>\n<pre><code class=\"php\">&lt;?php   echo CHtml::link('\u0412\u043e\u0439\u0442\u0438', array('\/some_controller\/fancy\/'), array('class'=&gt;'fancy_auth'));                         ?&gt; <\/code><\/pre>\n<p>  \u041f\u043e \u043a\u043b\u0430\u0441\u0441\u0443 \u0441\u0441\u044b\u043b\u043a\u0438 fancy_auth \u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435:<\/p>\n<pre><code class=\"javascript\">$(document).ready(function(){ \t$(&quot;.fancy_auth&quot;).fancybox({         'transitionIn'      : 'elastic',         'transitionOut'     : 'elastic',         'width'             : 345,         'height'            : 360,         'autoDimensions': false,         'autoSize': false,         'speedIn'           : '500',         'speedOut'          : '500',         'type'              : 'ajax',         'closeBtn' : false }); <\/code><\/pre>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u043d\u0430 \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 &#8216;type&#8217;: &#8216;ajax&#8217;. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435 &#8216;type&#8217;: &#8216;iframe&#8217;, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u043d\u0438\u0436\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0442\u0438\u043f \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e.<\/p>\n<h5>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/h5>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0441\u044b\u043b\u043a\u0438, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 \u0444\u043e\u0440\u043c\u0443 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c fancy \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 some_controller. \u0423 \u043c\u0435\u043d\u044f \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\"> public function actionFancy() {   $model=new UserLogin;    $this-&gt;performAjaxValidation($model);   echo $this-&gt;renderPartial('_login_utf',array('model'=&gt;$model),true,true); } <\/code><\/pre>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443 renderPartial \u2014 false. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043b\u044f \u043d\u0430\u0441 \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 true, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u043c processOutput(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 render \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h5>\u0428\u0430\u0431\u043b\u043e\u043d \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e encoding hell<\/h5>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u0438 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 utf-8, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\"> &lt;?php $form=$this-&gt;beginWidget('CActiveForm', array(         'id'=&gt;'user-login',         \/\/\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u043a\u0448\u0435\u043d\u0443, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u043c\u0443 \u0437\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e         'action' =&gt; Yii::app()-&gt;createUrl('\/user\/login'),         \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c ajax-\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a         'enableAjaxValidation'=&gt;true,         'clientOptions'=&gt;array(             'validateOnSubmit'=&gt;true,             \/\/\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c js \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u0438\u0448\u0435\u043b \u043e\u0442\u0432\u0435\u0442.              \/\/\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0438\u0436\u0435             'afterValidate' =&gt; 'js:afterValidate',         ),     )); ?          &lt;?php echo $form-&gt;labelEx($model,'username'); ?&gt;         &lt;?php echo $form-&gt;textField($model,'username'); ?&gt;         &lt;?php echo $form-&gt;error($model,'username'); ?&gt;              &lt;?php echo $form-&gt;labelEx($model,'password'); ?&gt;         &lt;?php echo $form-&gt;passwordField($model,'password'); ?&gt;         &lt;?php echo $form-&gt;error($model,'password'); ?&gt;              &lt;?php echo CHtml::SubmitButton('\u0412\u043e\u0439\u0442\u0438 \u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c', array(                     'type' =&gt; 'POST',                     \/\/ \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439                     \/\/ \u043f\u043e CSS-\u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0443 #msg.                     'update' =&gt; '#msg',                     'class'=&gt;'journalFancySubmit',                     )); ?&gt; &lt;?php $this-&gt;endWidget(); ?&gt; <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e, \u0438 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 win-1251, \u043a\u0430\u043a \u0438 \u043c\u043e\u0439, \u0442\u043e \u0432\u0430\u0448 \u0448\u0430\u0431\u043b\u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0430\u043c\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0432 \u0442\u043e\u0439 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435. \u0425\u043e\u043b\u043b\u0438\u0432\u0430\u0440\u0449\u0438\u043a\u0438 \u0441\u043a\u0430\u0436\u0443\u0442 \u2014 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0440\u043e\u0447\u043d\u043e \u0432 utf, \u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0430\u0432\u044b, \u043d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0447\u0430\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0438 \u0442\u0430\u043a\u043e\u0432\u044b, \u0447\u0442\u043e \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0440\u0435\u043b\u0438\u0433\u0438\u043e\u0437\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u044e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0435\u043b\u044c\u0437\u044f, \u0430 \u0447\u0442\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u2014 \u043d\u0430\u0434\u043e. \u0421\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u043c \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 utf-8. \u0422\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<h5>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 ajax-\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u043e\u0439<\/h5>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u0430\u043c\u0438 ajax-\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0435\u0439, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 ajax-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\"> if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {         echo CActiveForm::validate($model);         Yii::app()-&gt;end;       }  <\/code><\/pre>\n<p>  \u041d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 win-1251 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 json_encode, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u043e\u0439. \u041d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 validate:<\/p>\n<pre><code class=\"php\"> protected function validate($models, $attributes=null, $loadInput=true)     {         $result=array();         if(!is_array($models))             $models=array($models);         foreach($models as $model)         {             if($loadInput && isset($_POST[get_class($model)]))                 $model-&gt;attributes=$_POST[get_class($model)];             $model-&gt;validate($attributes);             foreach($model-&gt;getErrors() as $attribute=&gt;$errors)                 $result[CHtml::activeId($model,$attribute)]=$errors;         }                  if (empty($result)) {             $utf_result = array();         }                  foreach ($result as $key =&gt; $value) {             if (is_array($value)) {                 foreach ($value as $inner_key =&gt; $inner_value) {                     $utf_result[$key][$inner_key] = iconv('windows-1251', 'UTF-8', $inner_value);                 }             } else {                     $utf_result[$key] = iconv('windows-1251', 'UTF-8', $value);                 }         }                  return function_exists('json_encode') ? json_encode($utf_result) : CJSON::encode($utf_result);     } <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 CActiveForm::validate \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 $result.<\/p>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u0435\u043d\u044f\u0435\u043c \u0432\u044b\u0437\u043e\u0432 <\/p>\n<pre><code class=\"php\"> echo CActiveForm::validate($model); <\/code><\/pre>\n<p>  \u043d\u0430<\/p>\n<pre><code class=\"php\"> echo $this-&gt;validate($model); <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<h5>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/h5>\n<p>  \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e js-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 afterValidate, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u0432 clientOptions \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0444\u043e\u0440\u043c\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"php\"> 'clientOptions'=&gt;array(             'validateOnSubmit'=&gt;true,                        'afterValidate' =&gt; 'js:afterValidate', <\/code><\/pre>\n<p>  afterValidate \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f ajax-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. <\/p>\n<p>  \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014 (data, hasError), form \u2014 JQuery \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0444\u043e\u0440\u043c\u044b, data \u2014 json-\u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, HasError \u2014 \u0431\u0443\u043b\u0435\u0432\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435, \u0431\u044b\u043b\u0438 \u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438.<br \/>  \u0418\u043c\u0435\u0439\u0442\u0435 \u0432\u0432\u0438\u0434\u0443, afterValidate \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 validateOnSubmit \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0432 \u0438\u0441\u0442\u0438\u043d\u0443.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044e\u0437\u0435\u0440 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043b\u0441\u044f.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043c\u0435\u043d\u044f \u043e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">function afterValidate(form, data, hasError) {   if (hasError == false) {     window.location.reload();     parent.$.fancybox.close();   } } <\/code><\/pre>\n<h5>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h5>\n<p>  \u0412\u0441\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0437\u044f\u0442\u044b \u0441 <a href=\"http:\/\/www.yiiframework.ru\/forum\/\">yii-\u0444\u043e\u0440\u0443\u043c\u0430<\/a> \u0438 <a href=\"http:\/\/stackoverflow.com\">stackoverflow.com<\/a> \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<h5>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h5>\n<p>  \u0416\u0435\u043b\u0430\u044e \u0432\u0430\u043c \u0438 \u0441\u0435\u0431\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0432 utf-8 \u0438 \u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0436\u0438\u0437\u043d\u0438.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/218639\/\"> http:\/\/habrahabr.ru\/post\/218639\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c fancybox-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043d\u0430 yii \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 win-1251. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c, \u0438 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 utf, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a encoding hell, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435. \u0425\u043e\u0442\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u0438 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f.<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0438 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 fancybox.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-218639","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/218639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=218639"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/218639\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=218639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=218639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=218639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}