我想在表单的多个字段中应用验证....文本字段创建动态, 像 -
<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>
答案 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()的详细文档。