protected function populatePhoneForFioID($fioId, $phones) // получаем значения
{
if (!empty($phones)) { // проверяем нif (!empty($phones)) { // проверяем не пустое ли phone
$numbers = $phones['Number']; // обьявляем значения
$types = $phones['Type_ID'];
if (sizeof($numbers) === sizeof($types)) { //проверям размер обьектов number and type
foreach ($types as $key => $type) { // перебираем types ключ значение
if (isset($numbers[$key]) && !empty($numbers[$key])) {// если number не пустой и key не пустой
if ($this->isPhoneForUpdate($key, $phones['ID'])) { // это обновление то обращаемся к методу
$phone = Phone::model()->findByPk($key);// ищем эти значения в модели
} else { // обновляем
$phone = new Phone;
}
$phone->FIO_ID = $fioId;
$phone->Type_ID = $type;
$phone->Number = $numbers[$key];
$phone->save();
}
}
} else {
throw new CHttpException("Data size mismatch", 0);
}
}
}
protected function populateCreateNumber($fioId, $phones)
{
if (!empty($phones)) {
$numbers = $phones['Number'];
$types = $phones['Type_ID'];
if (sizeof($numbers) === sizeof($types)) {
foreach ($types as $key => $type) {
if (isset($numbers[$key]) && !empty($numbers[$key])) {
$phone = new Phone;
$phone->FIO_ID = $fioId;
$phone->Type_ID = $type;
$phone->Number = $numbers[$key];
$phone->save();
}
}
} else {
throw new CHttpException("Data size mismatch", 0);
}
}
}
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate()
{
$model = new Fio;
$phone = new Phone;
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model);
if (isset($_POST['Fio']) && isset($_POST['Phone'])) {
$model->attributes = $_POST['Fio']; // присваиваем все отрибуты model Fio
$model->Street_ID = $_POST['Street_ID']; // затем говорим ему что Street_ID нужно брать из Street_ID которое обьявлено в DynamicStreets методе
if ($model->save()) {
$this->populateCreateNumber($model->ID, $_POST['Phone']);
$this->redirect(array('view', 'id' => $model->ID));
}
}
$this->redirect(array('index'));
}