@Msklf

(Yii2) Как сравнить строку текущего пользователя?

У нас Yii2. К примеру, мы зашли под пользователем Admin, и пишем где-нибудь во ../views/site/index.php
Идентифицируем пользователя:
$adminModel = Yii::$app->user->identity;
Проверяем поле email: echo $adminModel->email;
Получаем: admin@admin.com
Но когда делаем проверку:
if($adminModel->email = 'not@admin.com')
{
    echo 'ok, not admin';
} else {
    echo 'yeah, admin';
}

То if не работает, просто выводится первое echoне пойму почему, может подскажет кто ?
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
То if не работает, просто выводится первое echoне пойму почему, может подскажет кто ?
IF - как раз таки работает, т.к. = - это оператор присвоения. == - это оператор сравнения, === - оператор строго сравнения. Настоятельно рекомендую ознакомиться с этим и этим.

P.S. Так же, хочу обратить Ваше внимание, что это штатные, базовые операторы (такие же, как +|-|*|/ и т.д.), и подобным поведением они обладают во многих языках, не только в PHP и с Yii никак не связаны напрямую.

не пойму почему, может подскажет кто ?
конкретно "почему?", думаю, по тому, что в конечном счёте, т.к. у Вас там стоит оператор присваивания, if выглядит так:

if('not@admin.com') {
  //do
}

Т.е. if проверяет значение, приводя его к bool, а строка 'not@admin.com' логически == true.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Даже если исправить условие, то все равно очень странный код.
Представим себе юзера с мылом vasya_coolhacker@mail.ru.
Ваша проверка выведет 'yeah, admin', потому что его мыло не совпадает же с not@admin.com. Отличный план!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы