Форум программистов, компьютерный форум, киберфорум
PHP: Фреймворки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313

Создание объекта модели в контроллере из переменной

25.11.2016, 18:10. Показов 780. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Фреймворк yii2. Допустим имеется контроллер, в котором нужно создать модель из переданной переменной $params.
Но модель не создаётся и выдаёт ошибку, что-то типа Class '\model\Order.php' not found.
Имя модели передаётся через ссылку примерно так: <a href="<?= Url::to(['/table?params=Order']) ?>">
Как создать модель из переменной?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace app\controllers;
use app\models\Category;
use app\models\Order;
use app\models\OrderItems;
use yii\data\ActiveDataProvider;
use Yii;
 
 
class TableController extends Controller {
 
    public function actionIndex($params) {
        $model = '\\model\\'.$params.'.php';
        $model = new $model;
        $dataProvider = new ActiveDataProvider([
            'query' => $model::find(),
            'pagination' => [
                'pageSize' => 10
            ],
            'sort' => [
                'defaultOrder' => [
                    'status' => SORT_ASC
                ]
            ],
        ]);
 
        return $this->render('index', [
            'dataProvider' => $dataProvider,
        ]);
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2016, 18:10
Ответы с готовыми решениями:

Использование модели в контроллере YII
Подскажите пожалуйста можно ли указать в контроллере какие модели он будет использовать? Yii начал изучать недавно,до этого учил CakepHP...

Не позволяет создать экземпляр модели в контроллере
Добрый день. Есть такая модель &lt;?php class SiteAdressModel { private $FirstAdressPart =...

Как подключать модели в контроллере (нужен совет)
Нужен совет как лучше сделать подключение т.е. Какие имена классов давать? Сейчас сделано, что классы(модели) имеют уникальные имена и...

2
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
25.11.2016, 18:39
А все потому что не надо внешнему миру знать о ваших моделях и тем более давать доступ к любой из них.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public function actionIndex($params) {
    switch($params) {
        case 'model1':
            $model = new Model1;
            break;
 
        case 'model2':
            $model = new Model2;
            break;
 
        default:
            return 'error';
    }
    
    $dataProvider = new ActiveDataProvider([
        'query' => $model::find(),
        'pagination' => [
            'pageSize' => 10
        ],
        'sort' => [
            'defaultOrder' => [
                'status' => SORT_ASC
            ]
        ],
    ]);
 
    return $this->render('index', [
        'dataProvider' => $dataProvider,
    ]);
}
Цитата Сообщение от phpk Посмотреть сообщение
$model = '\\model\\'.$params.'.php';
Ну если хочется извращаться, то .php явно лишнее. В итоге должно быть что то типа app\models\OrderItems
1
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
25.11.2016, 22:37  [ТС]
вышеприведённый код вызывает вид, в котором GridView.
Подскажите, как в виджете GridView динамически генерировать атрибут columns?
Там должны стоять поля из текущей таблицы.
Я пытался сделать так:
PHP
1
2
3
4
5
6
    <?php $columns = array_keys($dataProvider->sort->attributes); ?>
 
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => $columns,
    ]); ?>
но почему-то для одной таблицы из бд работает, а для другой таблицы не работает, выдаёт ошибку Invalid argument supplied for foreach()

Добавлено через 2 часа 3 минуты
решил проблему, не правильно передавал параметры сортировки в вид
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2016, 22:37
Помогаю со студенческими работами здесь

Создание объекта по имени функции из переменной
Подскажите как сделать в JS по аналогии с php: $obj=new $classname; Т.е. так не выходит: function somefunc(){} var...

Создание переменной на основе селектора кликаемого объекта.
Всем добрый день.Такой вот вопрос.Пишу свой первый скрипт на jquery, и вроде бы все почти ничего но в самый последний момент застрял,вот...

Быстрое создание юзера: в контроллере?
&lt;a href=&quot;/user/signup&quot;&gt;Создать&lt;/a&gt; метод из UserController public function signupAction() { $this-&gt;unauthorizedArea(); ...

Обращение к методам объекта без сохранения объекта в переменной
Пишу в эту тему, т.к. сейчас также решаю небольшую задачку с &quot;текущим интерфейсом&quot;. И есть небольшой вопросик: Возможно ли...

Id модели объекта
Мне нужно сделать чтобы выводилось данные кокретного объекта через ID. Но постоянно у меня ошибка NoReverseMatch Kод views.py: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru