ライブラリを使用せずにjqueryでダイナミックフィールドを作成したいと思います。私は2つのフォームを提出したが、1つのファイル私は実際に複数の時間を作成したい質問オプションは、それは複数回することができます。yii2でダイナミックフィールドを更新するには
以下のform.phpでは、label field
が複数回jqueryで作成されています。私はそれらを救うことができますが、私はどのようにしてupdate case
に1回以上提出されたものを表示するのか分かりません。本当に私の英語のために申し訳ありません。
コントローラ
public function actionCreate()
{
$model = new QuestionsOptions();
if ($model->load(Yii::$app->request->post())) {
if(sizeof(array_filter($_POST['QuestionsOptions']['label'])) > 0){
foreach($_POST['QuestionsOptions']['label'] as $key => $row){
$model->setIsNewRecord(true);
$model->option_id = null;
$model->label = $row;
$model->save();
}
}
// exit;
return $this->redirect(['view', 'id' => $model->option_id]);
} else {
return $this->renderAjax('create', [
'model' => $model,
]);
}
}
モデル
namespace app\models;
use Yii;
class QuestionsOptions extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'questions_options';
}
public function rules()
{
return [
[['question_id', 'label', 'type'], 'required'],
[['question_id'], 'integer'],
[['type'], 'string'],
[['dated', 'updated'], 'safe'],
[['label'], 'string', 'max' => 255],
[['question_id'], 'exist', 'skipOnError' => true, 'targetClass' => SurveysQuestions::className(), 'targetAttribute' => ['question_id' => 'question_id']],
];
}
public function attributeLabels()
{
return [
'option_id' => 'Option ID',
'question_id' => 'Question ID',
'label' => 'Label',
'type' => 'Type',
'dated' => 'Dated',
'updated' => 'Updated',
];
}
public function getQuestionsAnswers()
{
return $this->hasMany(QuestionsAnswers::className(), ['option_id' => 'option_id']);
}
public function getQuestion()
{
return $this->hasOne(SurveysQuestions::className(), ['question_id' => 'question_id']);
}
}
form.php
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<div class="surveys-questions-form">
<?php $form = ActiveForm::begin(); ?>
<?php
if(isset($_GET['option_id']) and $_GET['option_id'] > 0)
$id= $_GET['option_id'];
else
$id= $model->option_id;
echo $form->field($model, 'question_id')->hiddenInput(['value' => $id])->label(false);
?>
<div class="col-md-6">
<div id="question_wrapper">
<?= $form->field($model, 'type')->dropDownList([ 'text' => 'Text', 'numbers' => 'Numbers', 'date' => 'Date', 'texarea' => 'Texarea', 'checkbox' => 'Checkbox', 'radio' => 'Radio', 'rating' => 'Rating', ], ['prompt' => '']) ?>
<div id="add_more_field">
<?= $form->field($model, 'label[]')->textInput(['maxlength' => true]) ?>
</div>
<div class="form-group">
<?php
echo Html::a('Add more', 'javascript:void(0);', [
'id' => 'surveys-questions-new-button',
'class' => 'pull-right btn btn-primary btn-xs'
])
?>
</div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
</div>
<?php ActiveForm::end(); ?>
</div>
<?php
$script = <<< JS
$(document).ready(function(){
$('#surveys-questions-new-button').on('click', function() {
$("#add_more_field").clone().appendTo("#question_wrapper");
});
});
JS;
$this->registerJs($script);
?>
多分他の事は、私は本当に助けが欲しい私を提案することができますしてください私のコードでは、右もありません。
私は何かを提案することができますが、その後、あなたの検証は動作しません.... – Dani