Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
 
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
1

Две ActiveForm в одном виде

09.01.2018, 17:17. Просмотров 239. Ответов 12
Метки нет (Все метки)

Всем добрый день.
Подскажите, пожалуйста, как решить проблему:
Во view хочу сделать два ActiveForm...

Есть action в Контроллере
PHP
1
2
3
4
5
6
7
8
9
10
11
 public function actionCreate()
    {
        $model = new Products();
        $productsCharacteristics = new ProductsCharacteristics();
 
        return $this->render('create', [
            'model' => $model,
            'productsCharacteristics' => $productsCharacteristics,
 
        ]);
    }
view имеет примерно такой вид:
PHP
1
2
3
4
5
6
7
8
9
10
.....
    <?php $form = ActiveForm::begin(); ?>
        //здесь идут инпуты по модели $model
        <?= $form->field($model, 'name')->textInput(['maxlength' => true])->error(false) ?>
    <?php ActiveForm::end(); ?>
....
    <?php $form = ActiveForm::begin(); ?>
        //здесь идут инпуты по модели $model_
        <?= $form->field($productsCharacteristics, 'id_characteristic')->textInput()->error(false) ?>
    <?php ActiveForm::end(); ?>
Выдает ошибку:
PHP
1
Call to a member function isAttributeRequired() on nul
Если убрать вторую ActiveForm, то все работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2018, 17:17
Ответы с готовыми решениями:

Yii2 ActiveForm
Здравствуйте. Сделал я админку для сайта позавчера, все работало - добавление,...

Не загружается файл в ActiveForm
Использовал стандартный &lt;?php $form = ActiveForm::begin(]); ?&gt; &lt;?=...

Создание зависимой ActiveForm - Yii2
Всем привет! столкнулся с такой проблемой, есть форма регистрации...

Имеются две функции в виде строк, нужно перемножить их и получить новую функцию в виде строки
Доброго времени суток, имеются две функции в виде строк, нужно перемножить их и...

Две БД на одном сервере
Добрый вечер! Пишу программу на Delphi, база на MS SQL Server 2008. В таблице...

12
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
09.01.2018, 17:41 2
А если первую?
0
FloppyDisc
Особый статус
600 / 204 / 158
Регистрация: 18.11.2015
Сообщений: 1,033
09.01.2018, 18:04 3
PHP
1
var_dump($productsCharacteristics->getErrors());
0
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
09.01.2018, 20:43  [ТС] 4
Если убрать первую форму, то ошибка остается.

код:
PHP
1
var_dump($productsCharacteristics->getErrors());
дает ошибку
PHP
1
Call to a member function getErrors() on null
Есть подозрение, что что-то не то с моделью ProductsCharacteristics.
Но все перепроверил, с первого взгляда все норм...
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
09.01.2018, 21:04 5
Включаем логику.
Если две формы дают ошибку, когда работает только первая - ошибки нет, когда работает только вторая - ошибка есть, значит...?
0
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
10.01.2018, 09:03  [ТС] 6
То что проблема во второй форме, а точнее в переменной $productsCharacteristics, я понимаю. Но никак не могу понять в чем. Просмотрел всю цепочку БД->model->controller->view, но ничего подозрительного не увидел.
0
FloppyDisc
Особый статус
600 / 204 / 158
Регистрация: 18.11.2015
Сообщений: 1,033
10.01.2018, 10:07 7
Цитата Сообщение от Adigezalov Посмотреть сообщение
дает ошибку
PHP
1
var_dump($productsCharacteristics);
Вообще что у вас в модели ProductsCharacteristics
0
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
10.01.2018, 10:10  [ТС] 8
Цитата Сообщение от FloppyDisc Посмотреть сообщение
PHP
1
var_dump($productsCharacteristics);
Вообще что у вас в модели ProductsCharacteristics
Стандартная модель созданная GRUD

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class ProductsCharacteristics extends ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'products__characteristics';
    }
 
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            [
                'class' => TimestampBehavior::className(),
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
                    ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
                ],
                'value' => new Expression('NOW()'),
            ],
        ];
    }
 
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['id_product', 'id_characteristic'], 'required'],
            [['id_product', 'id_characteristic'], 'integer'],
            [['created_at', 'updated_at'], 'safe'],
            [['value'], 'string', 'max' => 255],
        ];
    }
 
    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'id_product' => 'Продукт',
            'id_characteristic' => 'Характеристика',
            'value' => 'Значение',
            'created_at' => 'Дата создания',
            'updated_at' => 'Дата последнего редактирования',
        ];
    }
}
0
FloppyDisc
Особый статус
600 / 204 / 158
Регистрация: 18.11.2015
Сообщений: 1,033
10.01.2018, 10:12 9
возможно у вас приходит null с request, попробуйте:
PHP
1
if($$productsCharacteristics->load(Yii::$app->request->post())){}
0
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
10.01.2018, 10:22  [ТС] 10
Цитата Сообщение от FloppyDisc Посмотреть сообщение
if($$productsCharacteristics->load(Yii::$app->request->post())){}
А можно, пожалуйста, поподробней
0
FloppyDisc
Особый статус
600 / 204 / 158
Регистрация: 18.11.2015
Сообщений: 1,033
11.01.2018, 11:41 11
Цитата Сообщение от Adigezalov Посмотреть сообщение
А можно, пожалуйста, поподробней
А у вас форма прогружается вообще или сразу ошибка?
0
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
11.01.2018, 11:43  [ТС] 12
Цитата Сообщение от FloppyDisc Посмотреть сообщение
А у вас форма прогружается вообще или сразу ошибка?
В том то и дело, что сразу ошибка

Про
Цитата Сообщение от FloppyDisc Посмотреть сообщение
if($$productsCharacteristics->load(Yii::$app->request->post())){}
Я понял, но до этого еще не дошло)) формы нет на экране
0
Саня-нн
2 / 2 / 1
Регистрация: 17.12.2017
Сообщений: 39
13.01.2018, 01:22 13
var_dump($productsCharacteristics->getErrors());
дает ошибку
Call to a member function getErrors() on null

Тут же ясно написано вызов getErrors() на null, т.е. нет данных в $productsCharacteristics
если написать к примеру
.....
<?php $form = ActiveForm::begin(); ?>
//здесь идут инпуты по модели $model
<?= $form->field($model, 'name')->textInput(['maxlength' => true])->error(false) ?>
<?php ActiveForm::end(); ?>
....
<?php $form = ActiveForm::begin(); ?>
//здесь идут инпуты по модели $model_
<?php if (isEmpty($productsCharacteristics)) {
echo "Пустое значение"
} else {
echo $form->field($productsCharacteristics, 'id_characteristic')->textInput()->error(false); } ?>
<?php ActiveForm::end(); ?>

То все будет отображаться
0
13.01.2018, 01:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2018, 01:22

Две ОС на одном компе
У меня совмещались на одном компе Windos 2000 &amp; Windows Home @ Linux. Теперь...

Две windows 7 на одном ПК
поставил вторую систему на отдельный ЖД. при запуске появляется выбор систем,...

Две ячейки в одном
Здраствуйте. Ести таблица категории, и ещё одна которая выбирает из ней две...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru