UnderpantsGnomes
UnderpantsGnomes

Reputation: 51

How i can insert image into validation message? (Yii2)

I write

[['section'], 'required', 'message' => '<span><img src="http://troll-face.ru/static/mememaker/c/6/19423-gaechka.jpg">Вы не выбрали раздел!</span>']

In rules, but it outputs as text, not image. Is it impossible to output images? Thank you.

Upvotes: 1

Views: 204

Answers (1)

cetver
cetver

Reputation: 11839

Here is working example for advanced template with client and server sides validation

/frontend/assets/AppAsset.php

<?php

namespace frontend\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{        
    public $depends = [
        'yii\bootstrap\BootstrapAsset',        
    ];
}

/frontend/controllers/DummyController.php

<?php

namespace frontend\controllers;

use frontend\models\Dummy;
use yii\web\Controller;

class DummyController extends Controller
{
    public function actionIndex()
    {
        $this->layout = 'dummy';
        $model = new Dummy();
        if ($model->load(\Yii::$app->getRequest()->post()) === true) {
            $model->validate();
        }
        return $this->render('index', compact('model'));
    }
}

/frontend/models/Dummy.php

<?php

namespace frontend\models;

use yii\base\Model;

class Dummy extends Model
{
    public $name;

    public function rules()
    {
        return [
            [['name'], 'required', 'message' => '
                <span>
                    <img src="http://troll-face.ru/static/mememaker/c/6/19423-gaechka.jpg">
                    Вы не выбрали раздел!
                </span>
               '
            ],
        ];
    }

    public function attributeLabels()
    {
        return [
            'name' => 'Name',
        ];
    }
}

/frontend/views/dummy/index.php

<?php

/**
 * @var $this yii\web\View
 * @var $form yii\widgets\ActiveForm
 * @var $model frontend\models\Dummy
 */

use yii\widgets\ActiveForm;
use yii\helpers\Html;

$form = ActiveForm::begin();
echo $form
    ->field($model, 'name', [
        'errorOptions' => [
            'tag' => 'div',
            'class' => 'help-block',
            'encode' => false
        ]
    ]);
echo Html::submitButton('Submit');
ActiveForm::end();

/frontend/views/layouts/dummy.php

<?php

/**
 * @var $this \yii\web\View
 * @var $content string
 */

?>

<?php

use frontend\assets\AppAsset;
use yii\helpers\Html;

AppAsset::register($this);

?>

<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?php echo Html::encode(Yii::$app->language) ?>">
<head>
    <?php
    $this->head();
    echo Html::tag('title', sprintf('%s, %s', Yii::$app->id, Html::encode($this->title)));
    ?>
</head>
<body>
<?php
$this->beginBody();
echo $content;
$this->endBody();
?>
</body>
</html>
<?php $this->endPage() ?>

Upvotes: 1

Related Questions