Форум программистов, компьютерный форум, киберфорум
Наши страницы

Yii

Войти
Регистрация
Восстановить пароль
 
Adigezalov
2 / 2 / 0
Регистрация: 23.06.2016
Сообщений: 64
#1

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

09.01.2018, 17:17. Просмотров 145. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Две ActiveForm в одном виде (Yii):

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

Не загружается файл в ActiveForm - PHP
Использовал стандартный &lt;?php $form = ActiveForm::begin(]); ?&gt; &lt;?= $form-&gt;field($model, 'imageFile')-&gt;fileInput() ?&gt; В модели для...

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

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

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

Две ОС на одном компе - Windows XP
У меня совмещались на одном компе Windos 2000 &amp; Windows Home @ Linux. Теперь на одном диске Windows 7, а на втором Windows XP SP2. Я их...

12
Massaraksh7
grumpy grandpa
290 / 243 / 64
Регистрация: 27.05.2017
Сообщений: 1,248
Записей в блоге: 16
09.01.2018, 17:41 #2
А если первую?
0
FloppyDisc
82 / 83 / 33
Регистрация: 18.11.2015
Сообщений: 598
09.01.2018, 18:04 #3
PHP
1
var_dump($productsCharacteristics->getErrors());
0
Adigezalov
2 / 2 / 0
Регистрация: 23.06.2016
Сообщений: 64
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
grumpy grandpa
290 / 243 / 64
Регистрация: 27.05.2017
Сообщений: 1,248
Записей в блоге: 16
09.01.2018, 21:04 #5
Включаем логику.
Если две формы дают ошибку, когда работает только первая - ошибки нет, когда работает только вторая - ошибка есть, значит...?
0
Adigezalov
2 / 2 / 0
Регистрация: 23.06.2016
Сообщений: 64
10.01.2018, 09:03  [ТС] #6
То что проблема во второй форме, а точнее в переменной $productsCharacteristics, я понимаю. Но никак не могу понять в чем. Просмотрел всю цепочку БД->model->controller->view, но ничего подозрительного не увидел.
0
FloppyDisc
82 / 83 / 33
Регистрация: 18.11.2015
Сообщений: 598
10.01.2018, 10:07 #7
Цитата Сообщение от Adigezalov Посмотреть сообщение
дает ошибку
PHP
1
var_dump($productsCharacteristics);
Вообще что у вас в модели ProductsCharacteristics
0
Adigezalov
2 / 2 / 0
Регистрация: 23.06.2016
Сообщений: 64
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
82 / 83 / 33
Регистрация: 18.11.2015
Сообщений: 598
10.01.2018, 10:12 #9
возможно у вас приходит null с request, попробуйте:
PHP
1
if($$productsCharacteristics->load(Yii::$app->request->post())){}
0
Adigezalov
2 / 2 / 0
Регистрация: 23.06.2016
Сообщений: 64
10.01.2018, 10:22  [ТС] #10
Цитата Сообщение от FloppyDisc Посмотреть сообщение
if($$productsCharacteristics->load(Yii::$app->request->post())){}
А можно, пожалуйста, поподробней
0
FloppyDisc
82 / 83 / 33
Регистрация: 18.11.2015
Сообщений: 598
11.01.2018, 11:41 #11
Цитата Сообщение от Adigezalov Посмотреть сообщение
А можно, пожалуйста, поподробней
А у вас форма прогружается вообще или сразу ошибка?
0
Adigezalov
2 / 2 / 0
Регистрация: 23.06.2016
Сообщений: 64
11.01.2018, 11:43  [ТС] #12
Цитата Сообщение от FloppyDisc Посмотреть сообщение
А у вас форма прогружается вообще или сразу ошибка?
В том то и дело, что сразу ошибка

Про
Цитата Сообщение от FloppyDisc Посмотреть сообщение
if($$productsCharacteristics->load(Yii::$app->request->post())){}
Я понял, но до этого еще не дошло)) формы нет на экране
0
Саня-нн
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 24
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
Привет! Вот еще темы с ответами:

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

Две ОС на одном компе - Windows XP
привет установил второй ос висту опять не пошла решил снести для чего зашёл на старую добрую хр запустил партишен меджик удалил раздел...

Две ОС на одном диске - FreeBSD
FreeBSD - можно ли установить эту систему, в качестве второй (первая -XP SP3), ж.диск - единственный., или снести винду предварительно?...

Две ОС на одном компьютере - Windows XP
после переустановки windows ХР, при включении вылазит сообщение о выборе ОС для запуска. Та что стоит первая в списке работает, а вторая...


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

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

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