Задать вопрос
  • Jquery2, почему не работает получение значения input?

    nepster-web
    @nepster-web Автор вопроса
    Все из-за регистра. js в нижний регистр все пихал.
    Ответ написан
    Комментировать
  • Как посчитать, во сколько раз больше число?

    nepster-web
    @nepster-web Автор вопроса
    Чуть чуть уточню вопрос. Меня интересует больше как это дело оптимально оформить . Да разделить число на число не плохо , но число может быть любым , это может быть 0 или отрицательное число . Тоесть как можно это дело красиво офороить без лишних проверок ?
    Ответ написан
    Комментировать
  • Каково место ООП в Laravel?

    nepster-web
    @nepster-web
    Про этот фраэмворк впервые слышу, но все-же чем Вас смущает статика ? Сейчас почти все современные фраэмворки используют статику, а все для того чтобы можно было к любым нужным методам или свойствам обратиться с любого места.
    Ответ написан
  • Как игнорировать регистр в экшинах Yii2?

    nepster-web
    @nepster-web Автор вопроса
    'urlManager' => [
                'ruleConfig' => ['class'=>'backend\components\MyUrlManager'],
    ...


    Далее я взял и скопировал полностью класс UrlManager в MyUrlManager. К сожалению расширить его не вышло, так как UrlManager содержит кучу приватных свойств, которые сам же и вызывает.

    В общем MyUrlManager полностью такой-же как и стандартный UrlManager с различием в одну строку в функции parseRequest

    $pathInfo = $request->getPathInfo();
            $pathInfo = rtrim(strtolower($pathInfo),'/');
    Ответ написан
    Комментировать
  • Yii2, работа с формами, как написать более сложную форму?

    nepster-web
    @nepster-web Автор вопроса
    Нашел еще вот такой пример в доках:
    <?= Html::activeLabel($model, 'password') ?>
    <?= Html::activePasswordInput($model, 'password') ?>
    <?= Html::error($model, 'password') ?>
    
    or
    
    <?= Html::activeLabel($model, 'username', ['label' => 'name']) ?>
    <?= Html::activeTextInput($model, 'username') ?>
    <div class="hint-block">Please enter your name</div>
    <?= Html::error($model, 'username') ?>


    Сгенерировал свою форму:
    <?php $form = ActiveForm::begin(['id' => 'contact_form']); ?>
    
                    <div class="clearfix">
                                     
                        <div class="form-col form-marg small fl-left">
                            <?= Html::activeLabel($model, 'name') ?>
                            <div class="field"><?= Html::activeTextInput($model, 'name', ['class'=>'form-item req']) ?></div>
                            <?= Html::error($model, 'name') ?>
                        <div class="hint-block"></div>
                        </div>     
                                                                   
                                                            
                        <div class="form-col form-marg small fl-left">
                            <?= Html::activeLabel($model, 'email') ?>
                            <div class="field"><?= Html::activeTextInput($model, 'email', ['class'=>'form-item req']) ?><div class="hint-block"></div></div>
                            <?= Html::error($model, 'email') ?>
                        <div class="hint-block"></div>
                        </div> 
                        
                     </div>                               
                                
                    <div class="form-col">
                        <?= Html::activeLabel($model, 'body') ?>
                        <?= Html::activeTextarea($model, 'body', ['class'=>'form-item req']) ?>
                        <?= Html::error($model, 'body') ?>
                        <div class="hint-block"></div>
                    </div> 
                          
                        
                    <div class="clearfix">
                        <div class="form-col form-marg small fl-left">
                            <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
                            'captchaAction' => '/site/default/captcha',
                            'options' => ['class' => 'form-item req'],
                            'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-9"><div class="field">{input}</div></div></div>',
                            ]) ?>
                        </div>
                    </div>
                
                    <div class="form-btn">
                        <div class="field"><?= Html::submitButton(Yii::t('app', 'Отправить'), ['class' => 'btn btn-primary']) ?></div>
                    </div>
                        
                    <?php ActiveForm::end(); ?>


    Все работает, кроме вот это-го блока. Тоесть yii2 js не обрабатывает вот этот блок и не показывает ошибки до отправления формы.
    Ответ написан
    1 комментарий
  • Yii 2. Как поменять url backend и frontend?

    nepster-web
    @nepster-web

    Options +FollowSymlinks
    RewriteEngine On

    # deal with admin first
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
    RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^.*$ backend/web/index.php [L]

    RewriteCond %{REQUEST_URI} ^/(assets|css)
    RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
    RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
    RewriteCond %{REQUEST_URI} !index.php
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ frontend/web/index.php
    Ответ написан
    3 комментария
  • Как указать корневой каталог сайта в .htaccess?

    nepster-web
    @nepster-web Автор вопроса

    Options +FollowSymlinks
    RewriteEngine On

    # deal with admin first
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
    RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^.*$ backend/web/index.php [L]

    RewriteCond %{REQUEST_URI} ^/(assets|css)
    RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
    RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
    RewriteCond %{REQUEST_URI} !index.php
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ frontend/web/index.php
    Ответ написан
    1 комментарий
  • PHPunit установка pear на openserver, почему install failed ?

    nepster-web
    @nepster-web Автор вопроса
    Скачал другую версию в оф сайта, все пошло !
    Ответ написан
    Комментировать
  • Почему в Ngnix запрос не попадает в location?

    nepster-web
    @nepster-web Автор вопроса
    Решение:
    В папке /game/public нужно было создать папку deberc
    Ответ написан
  • Почему в Ngnix запрос не попадает в location?

    nepster-web
    @nepster-web Автор вопроса
    Конфиг nginx на виртуальном сервере, не попадает в location /deberc

    server {
        listen       80;
        server_name 192.168.1.121;
    
        charset utf8;
        error_log /game/nginx/log/error.log;
        access_log  /game/nginx/log/access.log  main;
    
        #root /game/public;
    
    
        location /deberc {
            root /game/public;
            index index.html index.htm;
        }
    
        location / {
            root /game/public;
            index index.html index.htm;
        }
    
        error_page  404              /404.html;
    
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /game/public;
        }
    }
    Ответ написан
  • Почему в Ngnix запрос не попадает в location?

    nepster-web
    @nepster-web Автор вопроса
    user www-data;
    worker_processes 4;
    pid /var/run/nginx.pid;
    
    events {
    	worker_connections 768;
    	# multi_accept on;
    }
    
    http {
    
    	##
    	# Basic Settings
    	##
    
    	sendfile on;
    	tcp_nopush on;
    	tcp_nodelay on;
    	keepalive_timeout 65;
    	types_hash_max_size 2048;
    	# server_tokens off;
    
    	# server_names_hash_bucket_size 64;
    	# server_name_in_redirect off;
    
    	include /etc/nginx/mime.types;
    	default_type application/octet-stream;
    
    	##
    	# Logging Settings
    	##
    
    	access_log /var/log/nginx/access.log;
    	error_log /var/log/nginx/error.log;
    
    	##
    	# Gzip Settings
    	##
    
    	gzip on;
    	gzip_disable "msie6";
    
    	# gzip_vary on;
    	# gzip_proxied any;
    	# gzip_comp_level 6;
    	# gzip_buffers 16 8k;
    	# gzip_http_version 1.1;
    	# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    
    	##
    	# nginx-naxsi config
    	##
    	# Uncomment it if you installed nginx-naxsi
    	##
    
    	#include /etc/nginx/naxsi_core.rules;
    
    	##
    	# nginx-passenger config
    	##
    	# Uncomment it if you installed nginx-passenger
    	##
    	
    	#passenger_root /usr;
    	#passenger_ruby /usr/bin/ruby;
    
    	##
    	# Virtual Host Configs
    	##
    
    	include /etc/nginx/conf.d/*.conf;
    	#include /etc/nginx/sites-enabled/*;
    }


    В /etc/nginx/conf.d/*.conf 1 файл с содержимым:

    server {
            listen          80;
            server_name   localhost; 
    
            location /itest {
                    proxy_pass http://192.168.1.121;
            }   
           
            location /qtest {
                    proxy_pass http://192.168.1.122;
            }     
         
            location /ztest {
                    proxy_pass http://192.168.1.123;
            }          
    }
    Ответ написан
  • Как реализовать сеть из openVZ контейнера и проброс портов?

    nepster-web
    @nepster-web Автор вопроса
    СРАБОТАЛО ВОТ ТАК:
    vzctl set ${ID} --numothersock 120 --save
    vzctl set ${ID} --nameserver 8.8.8.8 --nameserver 8.8.4.4 --save
    Ответ написан
    Комментировать
  • Запуск redmine на debian: как исправить ошибку MySQL?

    nepster-web
    @nepster-web Автор вопроса
    Решено переустановкой на другую версию !
    Ответ написан
    Комментировать
  • Nginx путь к папке

    nepster-web
    @nepster-web Автор вопроса
    как то так сработало:

    location ~ ^/deberc/(.+\.(?:gif|jpg|jpeg|png|js|css))$ {
                alias /home/deberc/deberc/interface/$1;
            }
    Ответ написан
    Комментировать
  • Как проверить, откуда пришел запрос?

    nepster-web
    @nepster-web Автор вопроса
    Береженого бог бережет. Думал еще проверить откуда запрос пришел, мало ли. Всем большое спасибо.
    Ответ написан
    Комментировать
  • Как прикрутить вложенные реляции одним запросом Yii?

    nepster-web
    @nepster-web Автор вопроса
    В таблице игр добавил еще 1 реляцию: waiting
    public function relations()
        {
            return array(
                //'rule'    => array(self::HAS_MANY, 'GamesRuleModel',   '', 'on'=>'t.game_id=rule.game_id'),
                'proposal' => array(self::HAS_MANY, 'GameProposalModel', '', 'on'=>'t.game_id=proposal.game_id'),
                'waiting' => array(self::HAS_MANY, 'GameWaitingModel', '', 'on'=>'proposal.proposal_id=waiting.proposal_id'),
            );
        }


    Такая вещь не работает:
    $criteria->with = array(
                 'proposal' => array('joinType'=>'LEFT OUTER JOIN'),
                 'waiting.proposal',
            );


    Теперь делаем запрос:
    $game_id = 1;
              
            $criteria = new CDbCriteria;
            
            $criteria->select    = 't.game_id, t.game_name, t.alter_name';
            $criteria->condition = "t.game_id=:game_id AND proposal.status=-1";
            $criteria->params    = array(':game_id'=>$game_id);
            $criteria->together = true;
        
            $criteria->with = array(
                 'proposal' => array('joinType'=>'LEFT OUTER JOIN'),
                 'waiting',
            );
            
        
            $data = GamesModel::model()->find($criteria);
            
    
            echo '<pre>';
            print_r($data);
            echo '</pre>';


    [b]Всплывает объект:[/b]

    GamesModel Object
    (
        [_new:CActiveRecord:private] => 
        [_attributes:CActiveRecord:private] => Array
            (
                [game_id] => 1
                [game_name] => Клабор (Деберц)
                [alter_name] => deberc
            )
    
        [_related:CActiveRecord:private] => Array
            (
                [proposal] => Array
                    (
                        [0] => GameProposalModel Object
                            (
                                [user_rules] => 
                                [waiting_rules] => 
                                [_new:CActiveRecord:private] => 
                                [_attributes:CActiveRecord:private] => Array
                                    (
                                        [proposal_id] => 114
                                        [game_id] => 1
                                        [user_id] => 234
                                        [date] => 2014-01-13 17:10:28
                                        [status] => -1
                                        [rules] => [{"rule_id":"1","param":"30"},{"rule_id":"2","param":"0"},{"rule_id":"3","param":"4"},{"rule_id":"4","param":"301"},{"rule_id":"5","param":"0"}]
                                        [hash] => 61fe96c3d7291c7c04c6fcb71b8b49de
                                        [count_player] => 4
                                    )
    
                                [_related:CActiveRecord:private] => Array
                                    (
                                    )
    
                                [_c:CActiveRecord:private] => 
                                [_pk:CActiveRecord:private] => 114
                                [_alias:CActiveRecord:private] => t
                                [_errors:CModel:private] => Array
                                    (
                                    )
    
                                [_validators:CModel:private] => 
                                [_scenario:CModel:private] => update
                                [_e:CComponent:private] => 
                                [_m:CComponent:private] => 
                            )
    
                        [1] => GameProposalModel Object
                            (
                                [user_rules] => 
                                [waiting_rules] => 
                                [_new:CActiveRecord:private] => 
                                [_attributes:CActiveRecord:private] => Array
                                    (
                                        [proposal_id] => 113
                                        [game_id] => 1
                                        [user_id] => 500
                                        [date] => 2014-01-13 17:07:26
                                        [status] => -1
                                        [rules] => [{"rule_id":"1","param":"60"},{"rule_id":"2","param":"1"},{"rule_id":"3","param":"4"},{"rule_id":"4","param":"501"},{"rule_id":"5","param":"0"}]
                                        [hash] => 750da4a838006f676f0e0808ded1ac74
                                        [count_player] => 4
                                    )
    
                                [_related:CActiveRecord:private] => Array
                                    (
                                    )
    
                                [_c:CActiveRecord:private] => 
                                [_pk:CActiveRecord:private] => 113
                                [_alias:CActiveRecord:private] => t
                                [_errors:CModel:private] => Array
                                    (
                                    )
    
                                [_validators:CModel:private] => 
                                [_scenario:CModel:private] => update
                                [_e:CComponent:private] => 
                                [_m:CComponent:private] => 
                            )
    
                        [2] => GameProposalModel Object
                            (
                                [user_rules] => 
                                [waiting_rules] => 
                                [_new:CActiveRecord:private] => 
                                [_attributes:CActiveRecord:private] => Array
                                    (
                                        [proposal_id] => 112
                                        [game_id] => 1
                                        [user_id] => 234
                                        [date] => 2014-01-13 08:03:36
                                        [status] => -1
                                        [rules] => [{"rule_id":"1","param":"30"},{"rule_id":"2","param":"0"},{"rule_id":"3","param":"2"},{"rule_id":"4","param":"301"},{"rule_id":"5","param":"0"}]
                                        [hash] => b0105dc5a8908f82cb858987ea0cac50
                                        [count_player] => 2
                                    )
    
                                [_related:CActiveRecord:private] => Array
                                    (
                                    )
    
                                [_c:CActiveRecord:private] => 
                                [_pk:CActiveRecord:private] => 112
                                [_alias:CActiveRecord:private] => t
                                [_errors:CModel:private] => Array
                                    (
                                    )
    
                                [_validators:CModel:private] => 
                                [_scenario:CModel:private] => update
                                [_e:CComponent:private] => 
                                [_m:CComponent:private] => 
                            )
    
                    )
    
                [waiting] => Array
                    (
                        [0] => GameWaitingModel Object
                            (
                                [_new:CActiveRecord:private] => 
                                [_attributes:CActiveRecord:private] => Array
                                    (
                                        [waiting_id] => 182
                                        [proposal_id] => 114
                                        [user_id] => 234
                                        [sort] => 0
                                        [root] => 1
                                        [hash] => 61f7b277d2cb69b7af12bc0ab90dd814
                                    )
    
                                [_related:CActiveRecord:private] => Array
                                    (
                                    )
    
                                [_c:CActiveRecord:private] => 
                                [_pk:CActiveRecord:private] => 182
                                [_alias:CActiveRecord:private] => t
                                [_errors:CModel:private] => Array
                                    (
                                    )
    
                                [_validators:CModel:private] => 
                                [_scenario:CModel:private] => update
                                [_e:CComponent:private] => 
                                [_m:CComponent:private] => 
                            )
    
                        [1] => GameWaitingModel Object
                            (
                                [_new:CActiveRecord:private] => 
                                [_attributes:CActiveRecord:private] => Array
                                    (
                                        [waiting_id] => 183
                                        [proposal_id] => 113
                                        [user_id] => 231
                                        [sort] => 0
                                        [root] => 1
                                        [hash] => 61f7b277d2cb69b7af12bc0ab90dd814
                                    )
    
                                [_related:CActiveRecord:private] => Array
                                    (
                                    )
    
                                [_c:CActiveRecord:private] => 
                                [_pk:CActiveRecord:private] => 183
                                [_alias:CActiveRecord:private] => t
                                [_errors:CModel:private] => Array
                                    (
                                    )
    
                                [_validators:CModel:private] => 
                                [_scenario:CModel:private] => update
                                [_e:CComponent:private] => 
                                [_m:CComponent:private] => 
                            )
    
                        [2] => GameWaitingModel Object
                            (
                                [_new:CActiveRecord:private] => 
                                [_attributes:CActiveRecord:private] => Array
                                    (
                                        [waiting_id] => 184
                                        [proposal_id] => 112
                                        [user_id] => 232
                                        [sort] => 0
                                        [root] => 1
                                        [hash] => 61f7b277d2cb69b7af12bc0ab90dd814
                                    )
    
                                [_related:CActiveRecord:private] => Array
                                    (
                                    )
    
                                [_c:CActiveRecord:private] => 
                                [_pk:CActiveRecord:private] => 184
                                [_alias:CActiveRecord:private] => t
                                [_errors:CModel:private] => Array
                                    (
                                    )
    
                                [_validators:CModel:private] => 
                                [_scenario:CModel:private] => update
                                [_e:CComponent:private] => 
                                [_m:CComponent:private] => 
                            )
    
                    )
    
            )
    
        [_c:CActiveRecord:private] => 
        [_pk:CActiveRecord:private] => 1
        [_alias:CActiveRecord:private] => t
        [_errors:CModel:private] => Array
            (
            )
    
        [_validators:CModel:private] => 
        [_scenario:CModel:private] => update
        [_e:CComponent:private] => 
        [_m:CComponent:private] => 
    )


    Теперь разбираемся, что тут у нас:

    1) Данные об игре, в данном случае для теста я достал 3 параметра. ID и названия
    2) Заявки на игру proposals
    3) Пользователи которые ожидают игры waiting

    Значит как это все дело выглядит на практике:
    У нас есть сервер евент, который делает запрос на такой вот объект:
    Получив объект яваскрипт рисует таблицу заявок по данным proposals и waiting
    А так же по данным game обновляет статистику игру (к примеру сколько было сыграно игр за день, кол-во игроков онлайн и тп.)

    Теперь моменты:
    - если нет не одного ожидающего (нет записей waiting), все хорошо, объект приходит waiting пустой. Такого быть конечно не может, но на тесте проверяю.
    - дальше, к примеру к этим трем заявкам присоединились еще игроки, заявки получили другой статус (-1 в ожидании, 1 идет игра, 0 игра закончена, -2 игра не состоялась) и как бы заявок нет.
    делается запрос к серверу, и если заявок нет то возвращается пустота. В данном случае я яваскриптом отрисую таблицу, с надписью нет заявок. А вот как обновить статистические данные игры, если пришла пустота?

    Тоесть задача сделать так, что если нет proposal, приходит просто объект game

    По сути я это реализовывал по уровню школы:
    // транзакция 
    
    $data['game'] = .... findByPK($game_id);
    
    if($data['game'])
    {
            $data['proposal'] = ... findByAttibutes(array(...)) ;
            $data['waiting']  = ... findByAttibutes(array(...));
    }
    
    $transaction->commit();
    Ответ написан
    Комментировать
  • Как прикрутить вложенные реляции одним запросом Yii?

    nepster-web
    @nepster-web Автор вопроса
    CDbCommand не удалось исполнить SQL-запрос
    Ответ написан
    Комментировать
  • Почему не работает flush()?

    nepster-web
    @nepster-web Автор вопроса
    Ситуация стала интереснее. Оказывается там была ошибка (ее Yii роутил)

    ob_flush(): failed to flush buffer. No buffer to flush.

    если прикрыть собакой или в самом начале скрипта поставить ob_start();

    Реакция такая:
    Ждем секунд 12 выбрасываем сразу 7 запросов
    Ждем секунд 12 выбрасываем сразу 7 запросов
    Ждем секунд 12 выбрасываем сразу 7 запросов
    Ждем секунд 12 выбрасываем сразу 7 запросов
    Ждем секунд 12 выбрасываем сразу 7 запросов

    Уже ближе к теме, но откуда такие задержки и почему сразу данные пачкой бросает а не раз в 2 секунды ?
    Ответ написан
    Комментировать
  • Как пропустить js переменную через php функцию?

    nepster-web
    @nepster-web Автор вопроса
    Все понял, отформатировал данные до того как попали в js.

    Спасибо
    Ответ написан
    Комментировать
  • Как в intercassa происходит проверка платежа?

    nepster-web
    @nepster-web Автор вопроса
    Во имя аллаха:

    Итак нужно получить статус платежа. Я пробую:

    $ik_data = array();
           
           $ik_data['ik_co_id'] = 'мой номер кассы';
           
           $ik_data['ik_am'] = '0.01'; // сумма платежа
           
           $ik_data['ik_inv_st'] = 'process';
           
           $ik_data['ik_sing'] = '';
           
           $ik_data['ik_int'] = 'json';
            
            
           $get_string = http_build_query($ik_data, '', '&');
           
    
           $interkassa_contents = file_get_contents("https://sci.interkassa.com/?{$get_string}");
           $interkassa_contents = json_decode($interkassa_contents, true);
    
           print_r($interkassa_contents);


    Ответ от сервера:
    [resultCode] => 107
        [resultMsg] => Parameter "ik_pm_no" is empty


    И так он просит данные, до тех пор пока не получается что то такое:

    $ik_data = array();
           
           $ik_data['ik_co_id'] = 'мой номер кассы';
           
           $ik_data['ik_pm_no'] = '81';
           
           $ik_data['ik_am'] = '0.01'; // сумма платежа
           
           $ik_data['ik_pw_via'] = 'visa_liqpay_merchant_eur';
           
           $ik_data['ik_desc'] = '';
           
           $ik_data['ik_cur'] = 'eur';
           
           $ik_data['ik_act'] = 'process';
           
           $ik_data['ik_act'] = 'process';
           
           $ik_data['ik_int'] = 'json';

    Потом создает платеж.

    В тех поддержке мне написали про печать.

    foreach ($_POST as $key => $value) {
    if (!preg_match('/ik_/', $key)) {
    continue;
    }
    $data[$key] = $value;
    }
    ...


    $_POST массива у нас нет. Обязательно условие проверить платеж без входящих данных. Что должен содержать $_POST, что бы я мог его сформировать?

    Еще раз. Задача проверить платеж.
    К примеру пользователь оплатил счет (номер счета 10, сумма 100)

    Нужно скриптом проверить счет под номером 10 и узнать успешно прошел платеж или нет. Вот мучаюсь с этой проблемой.
    Ответ написан