/ / Динамично деклариране на модел в Yii2 - yii2, yii2-advanced-app

Динамично деклариране на модел в Yii2 - yii2, yii2-advanced-app

Искам динамично да създам модел на модел. Възможно ли е това с yii2?

Опитвам се нещо подобно

    <?php

namespace appcomponents;

use Yii;
use yiibaseComponent;
use yiibaseInvalidConfigException;
use yiiwebNotFoundHttpException;


use appmodels;


class SintelComponent extends Component
{

public function find($model_name, $id)
{
$magic = __NAMESPACE__."\".$model_name; //__NAMESPACE__ is a magic constant
if (($model = $magic::findOne($id)) !== null)
{
return $model;
}
else
{
throw new NotFoundHttpException("The requested page does not exist.");
}
}
}

$ model_name е името на модела. Когато се опитам това да получа грешка като тази

синтактична грешка, неочаквано "$ model_name" (T_VARIABLE), очакващо идентификатор (T_STRING)

Отговори:

1 за отговор № 1

Няма да мога да тествам това (аз съм на телефона си), но може ли да опитате да го направите по следния начин:

public function find($model_name, $id)
{
$_model = "app\models\".$model_name;
if (($model = $_model::findOne($id)) !== null)
{
return $model;
}
else
{
throw new NotFoundHttpException("The requested page does not exist.");
}
}

0 за отговор № 2

Можете да опитате по този начин:

namespace appmodels;
public function find($model_name, $id)
{
$magic = __NAMESPACE__."\".$model_name; //__NAMESPACE__ is a magic constant
if (($model = $magic::findOne($id)) !== null)
{
return $model;
}
else
{
throw new NotFoundHttpException("The requested page does not exist.");
}
}

Забележка: Работи само за текущото пространство от имена.