Искам динамично да създам модел на модел. Възможно ли е това с 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.");
}
}
Забележка: Работи само за текущото пространство от имена.