usdglander
@usdglander
Yipee-ki-yay

Как вызвать метод контроллера, имя которого находится в переменной?

Yii2. Суть в том, что хочу получать из базы имена контроллеров и вызывать из них один метод. Пробую:
public function actionIndex()
{
		$plugin = 'FilesController';
		$data['files'] = $plugin::thumbnail();
		return $this->render('index', ['data' => $data]);
}

Получаю: Class 'FilesController' not found.
Хотя:
public function actionIndex()
{
		$data['files'] = FilesController::thumbnail();
		return $this->render('index', ['data' => $data]);
}

работает. Что я делаю не так?
upd: Проблему, конечно решил указав имя класса вместе с неймспейсом, но чувствую что это не true way
$plugin = 'app\modules\cabinet\controllers\FilesController';
		$data['files'] = $plugin::thumbnail();
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
@cloud_zurbag
А почему не сделать так?
$plugin = __NAMESPACE__ . '/FilesController';
$data['files'] = $plugin::thumbnail();


Или
$plugin = __NAMESPACE__ . '/FilesController';
$data['files'] = call_user_func([$plugin, 'thumbnail']);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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