Передача моделей в формате массива представлениям в YII - PullRequest
0 голосов
/ 25 июля 2010

Как мне передать модель в формате массива.Я хочу передать модели в этом формате из контроллера для просмотра: -

Пользователи [user_contact] = Контакты пользователей [user_contact] [contat_city] = Городские пользователи [user_contact] [contact_state] = состояние

Это то, что я делаю

public function actionCreate() {
    $user = new Users;
    $presContact = new Contacts;
    $presCity = new Cities;
    $presState = new States;
    $contactArr = array();
    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    if (isset($_POST['Users'])) {
        $transaction = CActiveRecord::getDBConnection()->beginTransaction();
        $contactArr = CommonFunctions::saveContact($_POST['Users']['user_pres_contact'],'user_pres_contact',$errorArr);
        $presContact = $contactArr['contact'];
        $presCity = $contactArr['city'];
        $presState = $contactArr['state'];
        $user->attributes = $_POST['Users'];
        $user->user_pres_contact_id = $presContact->contact_id;
        if($user->save()){
            $transaction->commit();
            $this->redirect(array('view', 'id' => $user->user_id));
        } else {
            $transaction->rollback();

        }
    }

    $this->render('createUser', array(
        'Users' => $user,
        'Users[\'user_pres_contact\']'=>$presContact,
        'Users[\'user_pres_contact\'][\'contact_city\']'=>$presCity,
        'Users[\'user_pres_contact\'][\'contact_state\']'=>$presState,
    ));
}

Я могу получить доступ только к $ users, но не могу получить доступ к $ Users ['user_pres_contact'] в представлении

Ответы [ 3 ]

2 голосов
/ 25 июля 2010

Это потому, что вы назначаете их как строки ... Правильный способ сделать это (кстати, то, что вы просите, не может быть сделано буквально, невозможно присвоить 2 значения одной клавише):

$user = array(
'user_press_contact' => array(
  'contact' => $presContact,
  'city' => $presCity,
  'state' => $presState,
 ),
);


$this->render('createUser', array(
        'Users' => $user,
    ));

Это даст вам $ Users ['user_press_contact'] ['contact'] за имя в представлении и т. Д.

0 голосов
/ 20 августа 2010

Можно решить эту проблему с помощью модельных отношений? Вы можете определить отношение из модели User к модели City (например, назвав ее Relations_to_city), затем вы можете просто назначить модель пользователя в контроллере

$this->render('view', 'user'=>$user);

и доступ к городу (из вида)

$user->relation_to_city
0 голосов
/ 16 августа 2010

Вы можете использовать

$user->getAttributes() //it returns an array of data.

Надеюсь, это полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...