Yii2

yii2 Как грамотно обрабатывать модель если некоторые поля должны быть readonly -- только для чтения (избежать подделки запроса)

тут 2 варианта вижу: - disable, который ты описал

в этом случае значения не попадают на сервер

и поля у модели просто не обновляются, но у пользователя все равно отсается возможность убрать дизейбл с поля и перезаписать его

второй вариант, если не доверяешь пользователю - серверный
у модели есть правила валидации, а есть еще штука -- сценарии валидации
вот все правила, которые ты описываешь для модели, попадают в сценарий default

yii2 mongodb embadded Вложенные документы (в т.ч. массив), правила, валидация -- consultnn/yii2-mongodb-embedded

consultnn/yii2-mongodb-embedded

Замечательное расширение от ребят из Нижнего Новгорода: https://github.com/consultnn/yii2-mongod...

Для чего нужен yii2-mongodb-embedded

Позволяет нормально работать с вложенными документами в монгодб в рамках ActiveRecord, назначать правила для элементов массива вложенных документов (через отдельную модель), проводить валидацию родительсткой формы "как обычно" (поля тоже генерируются просто и стандартно).

yii2 Вывести сообщения ошибки валидации (после перезагрузки формы)

Для вывода ошибок валидации на форме, используйте вызов:

$form->errorSummary()

например:

<?php $form = ActiveForm::begin([ 'options' => ['class' => 'form']]
); ?>
<?=$form->errorSummary($model);?>

yii2tech Value should either an object or a null, 'array' given.

--такой вот косяк.

Решается в общем случае подключением поля с помощью метода mapEmbeddedList().
Подробности решения сообщим тут позже.

-- тут такой момент: mapEmbeddedList() создаёт ArrayObject -- но его приходится вручную "набивать" из пришедших от формы данных, а также не слишком ясно как сделать нормальную валидацию вложенной модели на форме.

Поэтому я рекомендую использовать для вложенных документов mongodb расширение consultnn/yii2-mongodb-embedded .

yii2 has no declaration for the embedded -- Ошибка (валидация) Решение

ПРИМЕЧАНИЕ: для работы со вложенными документами намного удобнее оказывается использовать consultnn/yii2-mongodb-embedded.

В моём случае ошибка выглядела как-то так:

'app\models\es\PrimaryReport' has no declaration ('embedresearch_results()') for the embedded 'research_results'

Причина в том, что если у вас есть метод, описывающий вложенную сущность:

yii2 Включение одного представления (view) в другое render()/include

Включение непрерывного фрагмента -- render()

Можно так (echo):

<?= $this->render('blocks/right_block',['models' => $models]); ?>

Или так:

<?= $this->render('blocks/right_block', compact('models')); ?>

Включение с возможностью окружения -- beginContent()

Чтобы включить какой-нибудь view в данное место данного шаблона, используйте код типа:

yii2 ActiveForm view Пример назначения шаблона всей форме, опции ajax валидации

Начать форму с аякс валидацией и изменённым шаблоном (где выключены автоматические метки -- labels) можно так:

yii2 checkbox и другие поля формы -- темизация, управление стилями, классами и другими атрибутами (label)

checkbox Обычная метка (подпись)

Начнём с того, что такой вот код действительно может сменить метку на нестадартную и даже повесить на неё класс:

<?= $form->field($model, 'field_name')
		->checkbox()->label('Билли -- новая метка', ['class' => 'abcd-label']); 
?>

-- но дело в том, что это всё опции для метки не рядом с галочкой, а отдельной метки, которая есть и текстовых полей. Эту отдельную метку можно даже выключить так:

yii2 JSON формат ответа -- пример кода (Controller action)

Один из способов ответить json-ом -- изменить перед инструкцией return действия контроллера формат ответа вызовом вроде:

\Yii::$app->response->format = Response::FORMAT_JSON;

После чего можно возвращать php-данные (объект или массив), которые будут автоматически сконвертированы в json/

Вот пример, где у нас уже есть json строка и просто хотим отдать её в ответ из действия контроллера (приходится перед отдачей переводить json данные в php-представление)

Pages

Subscribe to RSS - Yii2