Так и не получается сделать не пойму в чем подвох
Как вот Создать и обновить множественные поля
в еще и из других таблиц
вот пока рассмотрю Update:
public function actionUpdate($id) {
if (Yii::app()->user->checkAccess('User.Update')) {
$post = new Post;
$model = $this->loadModel($id);
$model->birthday = DateHelper::getFormatedDate($model->birthday);
$model->pass_date_of_issue = DateHelper::getFormatedDate($model->pass_date_of_issue);
//$model->description = $model->role->description;
$model->setScenario('update');
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model);
if(Yii::app()->request->isAjaxRequest){
//if (isset($_POST['ajax']) && $_POST['ajax'] === 'horizontalForm') {
echo CActiveForm::validate($model);
Yii::app()->end();
}
if (isset($_POST['User'])) {
$model->attributes = $_POST['User'];
if ($model->save()) {
if (isset($_POST['auto_var']) && $_POST['auto_var']>1)
{
for ($i=0;$i<intval($_POST['auto_var']);$i++)
{
$userCar= new UserCar;
$userCar->model = $_POST['User'][$i]['model'];
$userCar->marka = $_POST['User'][$i]['marka'];
$userCar->number = $_POST['User'][$i]['carnumber'];
$userCar->creation_date = $_POST['User'][$i]['creation_date'];
$userCar->user_id = $model->id;
if ($userCar->save()){
$this->redirect(array('view', 'id' => $model->id));
}else{
throw new Exception($userCar->getErrors());
}
}
}else{
$userCar = new UserCar;
$userCar->model = $model->model;
$userCar->marka = $model->marka;
$userCar->number = $model->carnumber;
$userCar->creation_date = $model->creation_date;
$userCar->user_id = $model->id;
if ($userCar->save()){
$this->redirect(array('view', 'id' => $model->id));
}else{
throw new Exception($userCar->getErrors());
}
}
}
}
$this->render('update', array(
'model' => $model,
'post' =>$post,
));
}else{
//throw new CHttpException(403, Yii::t("yii", "You are not authorized to perform this action."));
$this->redirect(Yii::app()->user->returnUrl);
}
}
<?php
$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
'id'=>'horizontalForm',
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
'inlineErrors' => false,
)); ?>
<fieldset>
<?php echo $form->errorSummary($model); ?>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'username', array('class'=>'span3','maxlength'=>128)); ?>
</div>
<div class="control-group">
<?php if ($model->isNewRecord): ?>
<?php echo $form->passwordFieldRow($model, 'password', array('class'=>'span3','maxlength'=>128)); ?>
<?php else: ?>
<?php echo $form->passwordFieldRow($model, 'npassword', array('class'=>'span3','maxlength'=>128)); ?>
<?php endif; ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'lname', array('class'=>'span3','maxlength'=>128)); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'fname', array('class'=>'span3','maxlength'=>128)); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'sname', array('class'=>'span3','maxlength'=>128)); ?>
</div>
<?
$postArr = array();
foreach ($post->findAll() as $value) {
$postArr[$value->title] = $value->title;
}
?>
<div class="control-group">
<?php echo $form->dropDownListRow($model, 'post', $postArr, array('class'=>'span4')); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'phone', array('class'=>'span3')); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'email', array('class'=>'span3','maxlength'=>128)); ?>
</div>
<div class="control-group">
<?php echo $form->labelEx($model,'birthday', array('class'=>'control-label', 'for'=>'birthday')); ?>
<div class="controls">
<?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'attribute'=>'birthday',
// additional javascript options for the date picker plugin
'options'=>array(
//'showAnim'=>'fold',
'buttonImage'=>Yii::app()->baseUrl . '/images/date.png',
'buttonImageOnly'=>true,
'buttonText'=>'Укажите дату рождения',
'showOn'=>'button',
'changeMonth'=> 'true',
'changeYear' => 'true'
),
'htmlOptions'=>array(
'class'=>'span2',
'id'=>'birthday',
'readonly'=>true,
'rel'=>'tooltip',
'title'=>'Выберите дату в календаре',
),
'language'=>Yii::app()->language,
)); ?>
</div>
</div>
<div class="control-group">
<legend>Паспортные данные</legend>
<!--<label class="control-label">Паспорт</label>-->
<div class="controls">
<?php echo $form->textField($model,'pass_seria',array("class"=>"span1","placeholder"=>'Серия...')); ?>
<?php echo $form->textField($model,'pass_number',array("class"=>"span2","placeholder"=>'Номер...')); ?>
</div>
</div>
<div class="control-group">
<?php echo $form->labelEx($model,'pass_date_of_issue', array('class'=>'control-label', 'for'=>'pass_date_of_issue')); ?>
<div class="controls">
<?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'attribute'=>'pass_date_of_issue',
// additional javascript options for the date picker plugin
'options'=>array(
//'showAnim'=>'fold',
'buttonImage'=>Yii::app()->baseUrl . '/images/date.png',
'buttonImageOnly'=>true,
'buttonText'=>'Укажите дату рождения',
'showOn'=>'button',
'changeMonth'=> 'true',
'changeYear' => 'true'
),
'htmlOptions'=>array(
'class'=>'span2',
'id'=>'pass_date_of_issue',
'readonly'=>true,
'rel'=>'tooltip',
'title'=>'Выберите дату в календаре',
),
'language'=>Yii::app()->language,
)); ?>
</div>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'pass_place_of_issue', array('class'=>'span7'));?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, 'pass_registration', array('class'=>'span7')); ?>
</div>
<div class="control-group">
<legend>Данные о автомобиле</legend>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, '[0]marka', array('class'=>'span5')); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, '[0]model', array('class'=>'span5')); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model, '[0]carnumber', array('class'=>'span5')); ?>
</div>
<div class="control-group">
<?php echo $form->textFieldRow($model,'[0]creation_date',array('class'=>'span1'));?>
</div>
<div class="span3">
<a class="btn btn-primary addAuto"><i class="icon-white icon-plus"></i>Еще Авто</a>
</div>
<input type="hidden" value ="1" name ="auto_var"/>
</fieldset>
<div class="form-actions">
<?php echo CHtml::htmlButton('<i class="icon-ok icon-white"></i> ' . Yii::t('app', 'Сохранить'),
array('class'=>'btn btn-primary', 'type'=>'submit')); ?>
<?php echo CHtml::htmlButton('<i class="icon-ban-circle"></i> ' . Yii::t('app', 'Очистить'),
array('class'=>'btn', 'type'=>'reset')); ?>
</div>
<p class="help-block">
<span class="label label-info">Info</span>
<?php echo Yii::t('app', 'Поля, отмеченные <span class="required">*</span> обязательны для заполнения.'); ?>
</p>
<?php $this->endWidget(); ?>
<script>
auto_var = 1;
$(function(){
$(".addAuto").click(function(){
var a = $(this)[0];
$.post("/user/addCar/", { index: auto_var },
function(d,a){
$(d).insertBefore($(".addAuto").parent('div'));
auto_var+=1;
$("input[name='auto_var']").val(auto_var);
}
);
})
});
user/addCar
<div class="control-group">
<label for="User_<?=$i?>_marka">Марка автомобиля</label>
<input class="span5" name="User[<?=$i?>][marka]" id="User_<?=$i?>_marka" type="text">
<span class="help-block" id="User_<?=$i?>_marka_em_" style="display: none"></span>
</div>
<div class="control-group">
<label for="User_<?=$i?>_model">Модель автомобиля</label>
<input class="span5" name="User[<?=$i?>][model]" id="User_<?=$i?>_model" type="text">
<span class="help-block" id="User_<?=$i?>_model_em_" style="display: none"></span>
</div>
<div class="control-group">
<label for="User_<?=$i?>_carnumber">Гос номер</label>
<input class="span5" name="User[<?=$i?>][carnumber]" id="User_<?=$i?>_carnumber" type="text" maxlength="6">
<span class="help-block" id="User_<?=$i?>_carnumber_em_" style="display: none"></span>
</div>
<div class="control-group">
<label for="User_0_creation_date">Дата выпуска автомобиля</label>
<input class="span1" name="User[<?=$i?>][creation_date]" id="User_<?=$i?>_creation_date" type="text" maxlength="4">
<span class="help-block" id="User_<?=$i?>_creation_date_em_" style="display: none"></span>
</div>
userCar
class UserCar extends CActiveRecord{
public function rules(){
return array(
array('marka,model,number,creation_date,user_id','required'),
array('marka,model,number,creation_date','safe'),
array('user_id','numerical')
);
}
public function attributeLabels()
{
return array(
'marka'=>'Марка автомобиля',
'model'=>'Модель автомобиля',
'number'=> 'Гос номера',
'creation_date'=>'Дата выпуска автомобиля',
);
}
public static function model($className = __CLASS__){
return parent::model($className);
}
public function tableName(){
return '{{user_car}}';
}
protected function beforeSave() {
return parent::beforeSave();
}
//Первичный ключ
public function primaryKey()
{
return 'id';
}
}
Как сделать сохранение неснкольких машин?