Редактировать данные ч / б двух моделей в cakephp - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть две модели, одна Login, а другая Userdetail. Я сохранил данные из модели Login в обеих моделях, используя соотношение hasone.

Пожалуйста, дайте мне знать, как можно их редактировать.

Я использовал следующий код для сохранения в моем add.ctp файле:

echo $form->create('Login', array('action'=>'add'));
    echo $form->input('first_name');
    echo $form->input('last_name');
    echo $form->input('email');
    echo $form->input('user_name');
    echo $form->input('password');
    echo $form->input('Userdetail.first_name');
    echo $form->input('Userdetail.last_name');
    echo $form->input('Userdetail.designation');
    echo $form->input('Userdetail.contact');
    echo $form->input('Userdetail.address');
    echo $form->end('Add');
and in controller i used : 
function add() 
    {
        if (!empty($this->data)) 
        {
            if ($this->Login->saveAll($this->data)) 
            {
                // User and Profile created successfully
                $this->Session->setFlash('Your post has been saved.');
                $this->redirect(array('action' => 'index'));
            } 
            else 
            {
                // Error creating user
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

как редактировать? То же, что и форма добавления, с записью для echo $form->input('id'); для входа в систему и echo $form->input('Userdetail.id'); для Userdetail

0 голосов
/ 08 сентября 2011

Ваш edit.ctp:

<?php
echo $form->create('Login');
echo $form->input('id');
echo $form->input('first_name');
echo $form->input('last_name');
echo $form->input('email');
echo $form->input('user_name');
echo $form->input('password');
echo $form->input('Userdetail.id');//updated
echo $form->input('Userdetail.first_name');
echo $form->input('Userdetail.last_name');
echo $form->input('Userdetail.designation');
echo $form->input('Userdetail.contact');
echo $form->input('Userdetail.address');
echo $form->end('Submit');
?>

Ваше действие редактирования в контроллере:

function edit($id = null)
{
$this->set('title_for_layout', __('Edit', true));

    if (!$id && empty($this->data)) {
        $this->Session->setFlash(__('Invalid ', true), 'default', array('class' => 'error'));
        $this->redirect(array('action'=>'index'));
    }
    if (!empty($this->data)) {
        if ($this->Login->save($this->data)) {
            $this->Userdetail->create();//updated code
            $this->Userdetail->id = $this->data['Userdetail']['id'];//updated code
          if ($this->Userdetail->save($this->data['Userdetail'])) {
            $this->Session->setFlash(__('Data has been saved', true), 'default', array('class' => 'success'));
            $this->redirect(array('action'=>'index'));
           }
        } else {
            $this->Session->setFlash(__('Data could not be saved. Please, try again.', true), 'default', array('class' => 'error'));
        }
    }
    if (empty($this->data)) {
        $this->data = $this->Login->read(null, $id);
    }
   }
...