Задать вопрос
@shevchenko__k
Помогаю новорожденным web программистам

Как сделать табличный ввод в Yii во view create?

Здравствуйте, подскажите пожалуйста мне как мне сделать view для action create.
Не надо мне писать ссылки на сайты и писать там все написано. я все эти ссылки видел.
прошу просто помочь и написать код.
код actionCreate
public function actionCreate()
    {
        $model = new Goals();
        
		$model->id_user = Yii::$app->user->id;
		$count = count(Yii::$app->request->post('Stage', []));
			$stages = [new Stage()];
			for($i = 1; $i < $count; $i++) {
				$stages[] = new Stage();
			}
        if ($model->load(Yii::$app->request->post())) {
			$model->doc = UploadedFile::getInstance($model, 'doc');
			if ($model->doc) {
				if($model->upload())
				{
					$model->doc = $model->doc->baseName.'.'.$model->doc->extension;
				}
			}
			
			if($model->save())
			{
				/* if($stages)
				{
					if (Model::loadMultiple($stages, Yii::$app->request->post()) && Model::validateMultiple($stages)) {
						foreach ($stages as $stg) {
							$stg->id_user = $model->id_user;
							$stg->goal_id = $model->id;
							$stg->save(false);
						}
					}
				} */
				
				return $this->redirect(['view', 'id' => $model->id]);
			}
            
        }

        return $this->render('create', [
            'model' => $model,
            'stages' => $stages,
        ]);
    }

верстка
<div class="stage">
			<div class="ag_1_2"><?= $form->field($stages, '[]title')->textInput(['class'=>'input_goal','placeholder'=>'Название этапа'])->label(false) ?></div>
			
			<div class="ag_1_2"><?= $form->field($stages, '[]description')->textarea(['class'=>'input_goal','placeholder'=>'Описание этапа'])->label(false) ?></div>
		    <ul class="ag_8">
			    <li class="ag_l"><img src="img/icon/leveldown.svg" alt=""/></li>
			    <li class="ag_ac"><?= $form->field($stages, '[]date_finish_stage')->widget(\yii\jui\DatePicker::className(),['class'=>'datepicker','options' => ['data' => ['picker' => 'datepicker']]])->label(false) ?></li>
		    </ul>
		            
		    </div>
  • Вопрос задан
  • 356 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
if ($model->load(Yii::$app->request->post()) && Model::loadMultiple($stages, Yii::$app->request->post()) && Model::validateMultiple($stages, Yii::$app->request->post())) {
      if($model->save()){
          foreach($stages as $stage){
              $stage->save(false);
          }
          // продолжаете выполнять код, загружать файлы, делать redirect()
      }
 }

В представлении поля для модели $stages создаёте при помощи конструкции foreach();
foreach($stages as $key => $stage){
    echo $form->field($stage, "[$key]title")->textInput();
    // остальные поля по аналогии.
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы