У меня есть три константы,
const STATUS_PENDING=1;
const STATUS_APPROVED=2;
const STATUS_DENY=3;
для них у меня есть этот метод,
public function getLeaveStatus()
{
return array(
self::STATUS_APPROVED=>'Approved',
self::STATUS_PENDING=>'Pending',
self::STATUS_DENY=>'Denied',
);
}
Теперь я хочу имена отображаться в виде вместо цифр,
<?php echo CHtml::encode($leave->status);?>
который отображает числа, и при этом,
<?php echo CHtml::encode($leave->getLeaveStatus());?>
Я получаю
htmlspecialchars() expects parameter 1 to be string, array given
Итак, как принять массив здесь, или, пожалуйста, предложите другой подход. Благодарю.
Вы возвращаете массив, если хотите получить статусное имя $leave->status
ты должен использовать это
public function getLeaveStatus($status)
{
$statusNames = array(
self::STATUS_APPROVED=>'Approved',
self::STATUS_PENDING=>'Pending',
self::STATUS_DENY=>'Denied',
);
return $statusNames[$status];
}
конец эха это:
echo CHtml::encode($leave->getLeaveStatus($leave->status));
Других решений пока нет …