Yii 2.0多文本字段验证

时间:2015-05-15 06:01:28

标签: php yii2

我想在表单的多个字段中应用验证....文本字段创建动态, 像 -

<div class="row">
    <?php foreach ($modelsForm->locale_models as $key => $value):
        ?>
        <div class="col-lg-4">
            <?= Html:: activeHiddenInput($value, "[$key]id"); ?>
            <?= Html:: activeHiddenInput($value, "[$key]brand_id"); ?>
            <?= Html:: activeHiddenInput($value, "[$key]model_id"); ?>
            <?= $form->field($value, "[$key]name")->textInput(); ?>
            <?= $form->field($value, "[$key]lang_code")->textInput(['readonly' => true]); ?>          
            <?= $form->field($value, "[$key]description")->textArea() ?>                
        </div>
    <?php endforeach; ?>
</div>

2 个答案:

答案 0 :(得分:1)

you need create custom validation and please have look loadmulitple library in yii 2 

    <?php

namespace app\controllers;

use Yii;
use yii\base\Model;
use yii\web\Controller;
use app\models\Site;

class SiteController extends Controller
{
    // ...

    public function actionIndex()
    {
        $settings = Setting::find()->One('id')->all();

        if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
          //check here  
        }


    }
}

答案 1 :(得分:0)

Yii2有一些内置的方法来实现这一点。

我建议从官方文档中阅读this article

以下是示例:

<?php

namespace app\controllers;

use Yii;
use yii\base\Model;
use yii\web\Controller;
use app\models\Setting;

class SettingsController extends Controller
{
    // ...

    public function actionUpdate()
    {
        $settings = Setting::find()->indexBy('id')->all();

        if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
            foreach ($settings as $setting) {
                $setting->save(false);
            }
            return $this->redirect('index');
        }

        return $this->render('update', ['settings' => $settings]);
    }
}

另请参阅ActiveRerord方法loadMultiple()validateMultiple()的详细文档。