我有两个模型A和B,其中A有很多B,现在我想在同一时间创建多个B(页面)。这是我的密码。
B.php
...
public function rules()
{
return [
[['username', 'xx', 'yy'], 'required'],
[['xx', 'yy'], 'string'],
[['username'], 'string', 'max' => 255]
];
}
..._form.php
<div class="b-form">
<?php $form = ActiveForm::begin(); ?>
<?php for ($i=0; $i < 3; $i++) {
?>
<h3>B #<?=$i+1?></h3>
<hr />
<?= $form->field($model, 'xx[]')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'yy[]')->textInput(['maxlength' => true]) ?>
<?php
}
?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>我想让这6(3x2)文本输入单独地进行响应,并且至少需要2对xx和yy来通过验证。
现在我如何建立好的规则来满足我的需求呢?
发布于 2016-01-14 03:37:33
官方文档- 收集表格输入中有关于它的专门章节。
控制器示例:
<?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]);
}
}使用的方法:
有更多的信息,例如,如何创建一组动态的新记录,如果您需要使用它。
另外,查看一些扩展,以简化多个输入的工作,例如unclead/yii2 2-多输入或wbraganca/yii2 2-动态。
我想让这6(3x2)文本输入单独响应,至少需要2对xx和yy通过验证。
这听起来很奇怪,您不应该信任并始终验证来自用户的所有数据。
https://stackoverflow.com/questions/34777017
复制相似问题