$this->alterColumn('category','id',$this->smallInteger(8).'NOT NULL AUTO_INCREMENT');
// for hasOne()
'value' => function($model){
return $model->country->name ?? null;
}
// for hasMany()
'value' => function($model){
return implode(',', ArrayHelper::map($model->country, 'id', 'name'));
}
'value' => 'country.name'
public function getImagesLinks()
{
$path = ArrayHelper::getColumn(self::find()->all(), 'pathImg');
return $path;
}
public function getImagesLinksData()
{
$files = UploadsFiles::find()->all();
return ArrayHelper::toArray($files,[
UploadsFiles::class => [
'caption' => 'file',
'key' => 'id'
]
]);
}
echo $form->field($model, 'imagesFile')->widget(FileInput::class, [
'options' => ['accept' => 'image/*', 'multiple' => true],
'pluginOptions' => [
'showUpload' => false,
'showRemove' => false,
'overwriteInitial'=>false,
'initialPreviewAsData' => true,
'initialPreview' => $model->imagesLinks,
'initialPreviewConfig' => $model->imagesLinksData,
'uploadUrl' => Url::to(['upload-img']),
'deleteUrl' => Url::to(['delete-img']),
]
])->label('<h3>Test Img</h3>');
$model->load()
. Поэтому со скрытым input всё работает.$model = new Direction();
$modelLang = new DirectionLang();
if ($modelLang->load(Yii::$app->request->post()) && $model->save()) {
$modelLang->lang_id = 2;
$modelLang->direction_id = $model->id;
$modelLang->save();
var_dump($model->getErrors());
var_dump($modelLang->getErrors());
return $this->redirect(['view', 'id' => $model->id]);
}
'<button onClick="DeleteImg('.$img->id.')"
dataType: 'html',
public function actionDelimage(){
// например так
print_r(Yii::$app->reqiest->post);
$id = Yii::$app->request->post('id');
$model = ProductImg::findOne($id);
$model->delete();
return true;
}
public function actionDelimage(){
if(Yii::$app->request->isAjax){
$id = Yii::$app->request->post('id');
if(($model = ProductImg::findOne($id)) !== null){
$model->delete();
return true;
}
else{
throw new NotFoundHttpException('The requested page does not exist.');
}
}
}
$this->registerJs("
$(function(){
alert('test')
})
", View::POS_END);
<div class="col-lg-6">
<?= $form->field($model, 'type')->textInput() ?>
<?= $form->field($model, 'number')->textInput() ?>
<?= $form->field($model, 'region')->textInput(['maxlength' => true]) ?>
</div>
<div class="col-lg-6">
<?= $form->field($model, 'type')->textInput() ?>
<?= $form->field($model, 'number')->textInput() ?>
<?= $form->field($model, 'region')->textInput(['maxlength' => true]) ?>
</div>
$form->field($model, 'status')->dropDownList(
[
'Активный' => ['Админ', 'Модератор', 'Пользователь'],
'Отключён' => ['За нарушения', 'Самостоятельно']
],
[
'prompt' => 'Выбрать статус'
])
Model::loadMultiple
вместо $model->load()
$query = Category::find()
->select(['*', 'product_count' => new \yii\db\Expression('COUNT(products.id)')])
->joinWith('products', false)
->groupBy('{{%categories}}.id')
$usersId = Yii::$app->request->post('items', []);
$usersId = Yii::$app->request->post('items', []);
$users = Users::findAll($usersId);
// для каждой отдельной модели передаёте её массив ошибок
if ($user->hasErrors()) {
$result = [];
$result[Html::getInputId($model, $attribute)] = $model->getErrors();
}
$sendemail = Yii::$app->mailer->compose()
->attach(Yii::getAlias('@root_folder') . '/frontend/uploads/' . $filename . 'Act1.pdf')
->attach(Yii::getAlias('@root_folder') . '/frontend/uploads/' . $filename . 'Act2.pdf')
->attach(Yii::getAlias('@root_folder') . '/frontend/uploads/' . $filename . 'Act3.pdf')
/* остальной код */
'@root_folder'
? Вам недостаточно стандартных псевдонимов типа @frontend
или @webroot
? if ($model->load(Yii::$app->request->post()) && $model->save()) {
$model->passport = UploadedFile::getInstance($model, 'passport');
if($model->passport){
$model->upload();
}
// остальной код действия.
}
if ($model->load(Yii::$app->request->post()) && $model->save()) {
if ($model->save()) {
Yii::$app->session->setFlash('success', 'Спасибо, мы получили вашу анкету. В скором времени мы с вами свяжемся.');
$path = 'img/store/' . $this->passport->baseName . '.' . $this->passport->extension;
$path = Yii::getAlias('@web') . 'img/store/' . $this->passport->baseName . '.' . $this->passport->extension;
// в конфигурационном файле
'errorHandler' => [
'errorAction' => 'path/to/error/view',
],
// в Вашем файле вывода ошибок
if($exception->statusCode == 404){
$this->title => 'Текст заголовка';
// остальные переменные
}
if($exception->statusCode == 500){
$this->title => 'Текст заголовка';
// остальные переменные
}
// остальной код файла
if($exception->statusCode == 404){$this->title = 'Где-то ошибка';}
/* остальной код файла */
<?php echo \yii2mod\comments\widgets\Comment::widget([
'model' => $model,
'dataProviderConfig' => [
'pagination' => [
'pageSize' => 10
],
'sort' => [
'defaultOrder' => ['id' => 'SORT_DESC']
]
]
]); ?>
if(empty($model->getDirtyAttributes())){
// если данные не обновляются, то делайте что Вы желаете)))
}
public function behaviors()
{
return [
[
'class' => SluggableBehavior::class,
//'attribute' => 'title',
'value' => function($event){
return mb_substr($this->title, 0, 5);
}
]
];
}
// $model это Documents
$model->docsign->user->name;
<?php foreach($model->docsign as $key => $value): ?>
<?= $value->user->name ?>
<?php endforeach; ?>