Yii2 - неизвестная ошибка в методе renderSelectOptions при использовании активного dropDownList

1

Я получаю сообщение об ошибке при вызове вышеупомянутого метода во время использования activeForm dropDownList. Что странно, что я уже сделал другие dropDownLists аналогичным образом, и они работают нормально.

Ошибка:

PHP Warning – yii\base\ErrorException
strcmp() expects parameter 2 to be string, object given

Код _form для генерации списка выглядит следующим образом:

$lista_unidades = ArrayHelper::map(Unidad::find()->where('institucion="Carabineros de Chile"')->asArray()->all(), 'id_unidad', 'nombre');

asort($lista_unidades);

$form->field($model, 'id_unidad_que_diligencia')->dropDownList($lista_unidades, ['prompt' => 'Seleccione...']);

Yii2 предоставляет следующую информацию об ошибке (ссылки на изображения):

Первый, второй

Любая помощь будет оценена.

РЕДАКТИРОВАТЬ:

Модельный класс:

<?php

namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;

/**
 * This is the model class for table "orden_judicial".
 *
 * @property string $id_orden_judicial
 * @property string $causa_rit
 * @property string $causa_ruc
 * @property string $causa_rol
 * @property string $fecha_emision
 * @property string $tipo
 * @property string $estado
 * @property string $id_unidad_que_direcciona
 * @property string $id_unidad_que_diligencia
 * @property string $id_unidad_que_redirecciona
 *
 * @property AdjuntoOrdenJudicial[] $adjuntoOrdenJudicials
 * @property Aviso[] $avisos
 * @property Persona[] $rutPersonas
 * @property Dilgienciamiento[] $dilgienciamientos
 * @property Unidad $idUnidadQueDirecciona
 * @property Unidad $idUnidadQueDiligencia
 * @property Unidad $idUnidadQueRedirecciona
 */
class OrdenJudicial extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
     public static function tableName()
    {
        return 'orden_judicial';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['fecha_emision', 'tipo', 'estado', 'id_unidad_que_direcciona', 'id_unidad_que_diligencia'], 'required'],
            [['fecha_emision'], 'safe'],
            [['id_unidad_que_direcciona', 'id_unidad_que_diligencia', 'id_unidad_que_redirecciona'], 'integer'],
            [['causa_rit', 'causa_ruc', 'causa_rol', 'tipo', 'estado'], 'string', 'max' => 100]
        ];
    }

    public function behaviors() {
        return [
                [
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'fecha_emision',
                    'updatedAtAttribute' => false,
                    'value' => new Expression('NOW()'),
                ],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id_orden_judicial' => 'Número de orden',
            'causa_rit' => 'Causa RIT',
            'causa_ruc' => 'Causa RUC',
            'causa_rol' => 'Causa ROL',
            'fecha_emision' => 'Fecha de Emisión',
            'tipo' => 'Tipo',
            'estado' => 'Estado',
            'id_unidad_que_direcciona' => 'Tribunal o Fiscalía',
            'id_unidad_que_diligencia' => 'Unidad Policial',
            'id_unidad_que_redirecciona' => 'Unidad que Redirecciona',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getAdjuntoOrdenJudicials()
    {
        return $this->hasMany(AdjuntoOrdenJudicial::className(), ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getAvisos()
    {
        return $this->hasMany(Aviso::className(), ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getRutPersonas()
    {
        return $this->hasMany(Persona::className(), ['rut_persona' => 'rut_persona'])->viaTable('aviso', ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getDilgienciamientos()
    {
        return $this->hasMany(Dilgienciamiento::className(), ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIdUnidadQueDirecciona()
    {
        return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_direcciona']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIdUnidadQueDiligencia()
    {
        return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_diligencia']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIdUnidadQueRedirecciona()
    {
        return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_redirecciona']);
    }
}

И класс контроллера с соответствующим действием:

<?php

namespace app\controllers;

use Yii;
use app\models\OrdenJudicial;
use app\models\OrdenJudicialSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;

/**
 * OrdenJudicialController implements the CRUD actions for OrdenJudicial model.
 */
class OrdenJudicialController extends Controller
{

    (...)

    public function actionCreate()
    {

        $model = new OrdenJudicial();

        $model->estado = "En Creacion";

        $idUnidadQueDiligencia = Yii::$app->getUser()->identity->getIdUnidad();

        $model->id_unidad_que_diligencia = $idUnidadQueDiligencia;

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id_orden_judicial]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

    (...)
}
  • 0
    Может быть содержимое $ list_unidades ....
  • 0
    я хотел знать, что содержит поле 'nombre'. это целое число, строка или что-то еще @scaisEdge
Показать ещё 5 комментариев
Теги:
yii2

1 ответ

0
Лучший ответ

Может быть ваш id_unidad_que_diligencia si объект не одним значением.

$idUnidadQueDiligencia = Yii::$app->getUser()->identity->getIdUnidad();

$model->id_unidad_que_diligencia = $idUnidadQueDiligencia;

попробуйте выполнить эту ситуацию, используя

var_dump($model->id_unidad_que_diligencia) 

то, если это не плоское строковое значение, настройте код для получения правильного значения.

  • 0
    Это помогло мне решить проблему. Вместо установки там id_unidad_que_diligencia я намеревался установить id_unidad_que_direcciona . Приложение id_unidad_que_diligencia из-за попытки добавить другое значение в id_unidad_que_diligencia когда оно уже установлено. Спасибо!
  • 0
    @Ignaciovl Это хорошая новость. Сначала я не мог понять, что проблема не в выпадающем списке, а в значении поля. Я оцениваю ваш вопрос как полезный, потому что это не простой вопрос ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню