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

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

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

Author24 — интернет-сервис помощи студентам
Фреймворк 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
25.11.2016, 18:10
Ответы с готовыми решениями:

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

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

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

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

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

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  [ТС] 3
вышеприведённый код вызывает вид, в котором 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
25.11.2016, 22:37
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
25.11.2016, 22:37
Помогаю со студенческими работами здесь

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

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

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

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

Вращение модели вокруг объекта
Не могу понять, как вращать один объект, вокруг другого так, что б один конец вращался по дуге, а...

Построение и интерпретация граф-модели объекта
Задача: Разрабатывается приложение, воспроизводящее граф по его xml-описанию. Первоначально...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru