Ответы пользователя по тегу Yii
  • Как сделать orderBy из 2 таблиц используя AR with?

    @akula22 Автор вопроса
    UP
    понадобилось добавить еще одно поле для вывода
    Ответ написан
    Комментировать
  • Как создать многомерный массив для постановки его в dropDownList (yii2)?

    @akula22 Автор вопроса
    Бывают же чудеса, просто на шару написал так
    ArrayHelper::map($array, 'id', 'title', 'category.title');


    и все получилось )))
    Ответ написан
    Комментировать
  • При открытие сайта не работает кэширование?

    @akula22 Автор вопроса
    даже иконки перед ссылками всегда заново прорисовываются, на других сайтах все норм, значит это не браузер. Картинки маленькие превьюшки (
    Заголовки такие
    <head>
            <meta charset="<?= Yii::$app->charset ?>"/>
            <meta name="viewport" content="width=device-width; initial-scale=0.85; maximum-scale=0.85; user-scalable=0;"/>
            <meta name="yandex-verification" content="......"/>
            <?= Html::csrfMetaTags() ?>
            <title><?= Html::encode($this->title) ?></title>
            <?php $this->head() ?>
    
        </head>


    Может сюда что-то дописать надо?
    Ответ написан
  • Кто-нибудь ставил 2amigos/yii2-taggable-behavior?

    @akula22 Автор вопроса
    Проблема была в AfterSave(); жаль нельзя удалить вопрос
    Ответ написан
    Комментировать
  • Как сделать фильтрацию в GridView по некоторому условию других полей?

    @akula22 Автор вопроса
    Я вроде понял как надо сделать.
    if ($this->cancel_flag == 0) {
                $query->andFilterWhere(['not', ['address.user_id' => null]])
                    ->andWhere(['not', ['address.project_id' => null]])
                    ->andWhere(['not', ['address.project_template_id' => null]])
                    ->andWhere(['address.monitor' => 1]);
            }

    и так далее
    Ответ написан
    Комментировать
  • Как грамотно сделать закрытие сайта по опции?

    @akula22 Автор вопроса
    Пока ждал ответа сам придумал такое решение, прошу заценить.
    в конфиге
    'bootstrap' => [
            'app\components\MainComponent',
        ],

    и сам MainComponent
    class MainComponent extends Component
    {
        public $roles = ['root', 'admin']; // разрешенные роли
    
        public function init()
        {
            if (Yii::$app->params['is_offline'] == 1) {
                $enable_role = in_array(Yii::$app->user->identity->role, $this->roles);
    
                $ips = explode(',', Yii::$app->params['allow_ip']);
                $ips = array_map("trim", $ips);
                $enable_ip = in_array($this->getIp(), $ips); //check "allowed IP"
    
                if(!$enable_role AND !$enable_ip) {
                    die(Yii::$app->params['closeText']);
                }
            }
        }
    Ответ написан
    Комментировать
  • Много OR и AND в запросе ActiveRecord?

    @akula22 Автор вопроса
    Подскажите как еще взять из таблицы данные, где значение part максимальное?
    что-то типа этого
    $part = TourPlayoff::find()
                ->where(['tour_id' => $this->tour_id, 'user_id' => [$model->user1, $model->user2]])
                ->asArray()
                ->select([new Expression('max(part) part'), new Expression('team_id')])
                ->all();

    выводит только одну запись, а их две!
    Ответ написан
    Комментировать
  • Как отфильтровать данные под двум полям из другой таблицы?

    @akula22 Автор вопроса
    Чтение документации помогло )
    надо было так
    $query->joinWith(['userHome a' => function ($q) {
                        $q->where('a.username LIKE "%' . $this->user1 . '%"');
                    }]);
            $query->joinWith(['userAway b' => function ($q) {
                    $q->where('b.username LIKE "%' . $this->user2 . '%"');
                }]);
    Ответ написан
    Комментировать
  • Как в gridview сделать разный фон ячеек в нестандартном порядке?

    @akula22 Автор вопроса
    <tbody class="ui-sortable">
    <tr data-key="7" class="ui-sortable-handle"><td style="border-top:1px solid; ">1</td><td ><img src="/upload/images/team/586246181f77b.png" alt="" style="width:35px;height:35px;"> Zenit St. Petersburg - [ robot_dqaTH ] </td></tr>
    <tr data-key="1" class="ui-sortable-handle"><td >2</td><td><img src="/upload/images/team/5894d64081ada.png" alt="" style="width:35px;height:35px;"> Amkar Perm - [ akula22 ] </td></tr>
    Ответ написан
    Комментировать
  • Не могу найти странную ошибку, всю голову сломал?

    @akula22 Автор вопроса
    Вот вьюха
    <?php
    use yii\helpers\Html;
    use yii\helpers\HtmlPurifier;
    
    $this->title = Yii::$app->name . ' / ' . $model->title;
    
    $this->params['breadcrumbs'][] = ['label' => Yii::t('main', 'News'), 'url' => ['/post/default/index']];
    $this->params['breadcrumbs'][] = ['label' => $model->parent->title, 'url' => ['/post/default/category', 'slug' => $model->parent->slug]];
    $this->params['breadcrumbs'][] = $model->title;
    
    $this->registerMetaTag(['name' => 'description', 'content' => $model->description]);
    $this->registerMetaTag(['name' => 'keywords', 'content' => $model->keywords]);
    ?>
    
    <div class="col-md-6">
        <div class="well">
            <div class="page-title"><h1><?= Yii::t('main', 'News') ?></h1></div>
            <div class="box88">
                <h1 class="title"><?= Html::encode($model->title) ?></h1>
                <div class="pad10">
                    <?= Html::img($model->picUrl, ['class' => 'img-responsive']); ?>
                </div>
    
                <div class="pad10">
                    <?= HtmlPurifier::process($model->short); ?>
                </div>
    
                <div class="clear"></div>
                ...
                <div class="pad5">
                    <?= HtmlPurifier::process($model->full); ?>
                </div>
    
                <div class="clear"></div>
    
                <?php if (!empty($model->tagLinks)) : ?>
                    <div class="tags">
                        <b><?= Yii::t('main', 'Tags') ?></b>:
                        <?= $model->tagLinks ?>
                    </div>
                <?php endif; ?>
    
                <div class="author_panel">
                    <p><i class="fa fa-user-secret"></i> <?= $model->user->username ?> &nbsp; <i
                            class="fa fa-calendar-check-o"></i> <?= Yii::$app->formatter->asDate($model->created_at) ?></p>
                </div>
    
                <br/>
    
                <?= \app\modules\comments\widgets\CommentWidget::widget(['model' => $model]) ?>
    
            </div>
        </div>
    </div>
    Ответ написан
    Комментировать
  • Как правильно сделать проверку прав доступа на изменение этих самых прав?

    @akula22 Автор вопроса
    Не знаю правильно или нет, но сделал так:
    проверка так
    Yii::$app->user->can('changeRoles', $model->attributes['role'])

    а в классе
    public function execute($user_id, $item, $params)
    {
    $role = \Yii::$app->user->identity->role;

    if($role == 'moder')
    return false;

    if($role == 'root')
    return true;

    if($role == 'admin') {
    if($params == 'root') {
    return false
    } else {
    return true;
    }
    }
    }
    Ответ написан
    Комментировать
  • Как убрать class nav из yii\bootstrap\Nav?

    @akula22 Автор вопроса
    Вопрос решился,

    'template' => '<a href="{url}" class="ico ico-about">{label}</a>',
    Ответ написан
    Комментировать
  • Yii2 правила в Url manager, как указать все символы?

    @akula22 Автор вопроса
    Вопрос решился, у меня какой-то конфликт был в коде
    Ответ написан
    Комментировать
  • Sql Запрос с временной таблицей в ActiveDataProvider?

    @akula22 Автор вопроса
    Вот такой запрос
    $subQuery = (new Query())->select('id, username, text, sender_id')->from('pm')->where('user_id =2 AND sender_id !=2 AND STATUS !=2 ORDER BY created_at DESC');
        $query = self::find();
        $query->from(['AS tmp_table GROUP BY sender_id' => $subQuery]);
        $query->with(['profile']);

    формирует SELECT * FROM (SELECT `id`, `username`, `text`, `sender_id` FROM `pm` WHERE user_id =2 AND sender_id !=2 AND STATUS !=2 ORDER BY created_at DESC) `AS tmp_table GROUP BY sender_id` LIMIT 10

    с виду получается тот самый запрос который нужен, но он почему-то не группирует, а вот если руками убрать кавычки из `AS tmp_table GROUP BY sender_id` т.е поменять на AS tmp_table GROUP BY sender_id тогда все выводит как надо, но как заставить генерить запрос без этих кавычек?
    Ответ написан
  • Как сделать ссылку с параметрами для Ajax?

    @akula22 Автор вопроса
    Вот уже вторые сутки бьюсь с этим аяксом, получилось вот что:

    Есть блок, который при нажатие на ссылку раскрывается скратким описанием новости, и ниже есть кнопка подробнее.
    <td>
    				<?= Html::a($item->title, 'javascript:show("newsid", ' . (int)$item->link . ')') ?> 
    			</td>
    			<tr>
    				<td>
    					<div style="display:none" id="newsid_<?= (int)$item->link ?>">
    						<?= $item->description ?>
    
    						<?= Html::a('подробнее', ['/site/default/footballnews', 'id'=>(int)$item->link], [ 
    							'id' => 'link_fnews',
    							'class' => 'btn btn-small', 
            					'data' => [ 
            					    'data-method' => 'post',
           						], 
        					]) ?>  
    					</div>
    				</td>


    при нажатие подробнее срабатывает функция JS
    <?php
    $js = "$('#link_fnews').on('click', function(e) 
        {
        	e.preventDefault();
        	var link = $(this).attr('href');
    		var id = link.split('?id=');  //  парсю строку и получаю чистый ID новости
    
        	$('#link_fnews').html('<i class=\"fa fa-spinner fa-pulse\"></i>');   //  здесь гружу анимацию(loading)
            
            $.post
            (
            	link, 
            	function(data)
            	{
    
            		$('#link_fnews').html('');  //  убираю анимацию
            		$('#newsid_'+id[1]).append(data)   //  грузим новость в блок с айди новостью
            	}
    		);
        }
    )";
    $this->registerJs($js, $this::POS_READY);
    ?>


    в контроллере я получаю новость по айди и возвращаю ее echo $content;

    Если я запрашиваю первую новость, то все хорошо, все как надо, а если любую другую то меня кидает на станицу /site/default/footballnews?id=379255 и там текст новости, почему это происходит? как исправить
    и второй вопрос, можно ли оптимизировать мой код?
    Ответ написан