Ballly
@Ballly

Как устранить ошибку «Class name must be a valid object or a string»?

Всем здравствуйте! Подскажите пожалуйста, почему возникла ошибка - "Class name must be a valid object or a string" и как ее можно устранить. Данная ошибка появляется только в виде create, в виде update - форма открывается нормально и данное поле содержит выпадающий спискок.
model.php
public function getListSpecialty(){
        return ArrayHelper::map($this->specialty::find()->all(), 'id', 'title');
    }

form.php
<?= $form->field($model, 'specialty_id')->dropDownList(['prompt' => 'Выберите специальность ...', $model->listSpecialty]); ?>
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@PiloTeZ
...
public function getListSpecialty(){
$scpeciality = $this->specialty;
        return ArrayHelper::map($specialty::find()->all(), 'id', 'title');
    }


А вообще лучше через связи это реализовать, а затем через ArrayHelper
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
нельзя просто так взять и вызвать метод ::find от null или что там у вас возвращает $this->specialty. Делайте проверки
public function getListSpecialty(): array
{
    if($this->specialty instanceof yii\db\ActiveQueryInterface){
        return ArrayHelper::map($this->specialty::find()->all(), 'id', 'title');
    }
     return [];
}


Но скорее всего у вас говнокод в методе specialty() и позаботиться о возврате ActiveQueryInterface надо там. Но вы его не привели, так что...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы