Как сохранить данные в таблице, когда я использую данные других таблиц для отображения в cakephp? - PullRequest
1 голос
/ 13 июня 2011

Извините, если мой вопрос расплывчатый, я постарался сохранить его как можно более простым, я использую следующий контроллер в cakephp:

var $uses = array('Client','Ticket','Userseequeue','Queue','Task','User');
var $useTable = false;

function index() {
    $clientsResult = $this->Client->find('all');
    $userSeeQueuesResult = $this->Userseequeue->find('all', array('conditions' => array('Userseequeue.user_id' => '1') ) );
    $ticketsResult = $this->Ticket->find('all');
    $queuesResult = $this->Queue->find('all');
    $tasksResult = $this->Task->find('all', array('group' => array('Task.ticket_id','Task.queue_id') ) );
    $usersResult = $this->User->find('all');
    $this->set(compact('tickets','userSeeQueues','clients','queuesResult','tasksResult','users','ticketUsers','ticketQueues'));
    if (!empty($this->data)) {
        $this->Ticket->create();
        $this->Ticketsinqueue->insertData($this->data);
        if ($this->Ticket->save($this->data) && $this->Ticketsinqueue->save($this->data)) {
            $this->Session->setFlash(__('The ticket has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The ticket could not be saved. Please, try again.', true));
        }
    }
}

И я использую эти таблицы для отображения сводной информации в одном представлении.

Мне нужно добавить форму на этом экране просмотра, чтобы добавить дополнительный билет. Что я делаю неправильно или отсутствует, чтобы создать эту форму и сохранить ее в таблице?

Вот мой взгляд, где я пытался создать форму, на случай, если она может помочь:

<div class="Summary index">
<h2><?php __('Summary');?></h2>
<?php echo $this->Form->create('Ticket');?>
<fieldset>
    <legend><?php __('Add Ticket'); ?></legend>
<?php
    echo $this->Form->input('Ticket.name');
    echo $this->Form->input('Ticket.user_id');
    echo $this->Form->input('Ticket.queue_id');
?>
<?php echo $this->Form->end(__('Submit', true));?>
</fieldset>
...

Это создает форму, но она не заполняет выпадающий список из таблиц своих отношений правильно, как это было бы в обычном представлении добавления, созданном cakephp. В настоящее время он заполняет раскрывающийся список всеми таблицами, которые я использовал в этом контроллере.

Буду признателен, если кто-нибудь сможет мне помочь или помочь мне в правильном направлении.

1 Ответ

0 голосов
/ 15 июня 2011

Я получил это для работы:

Когда контроллер сначала сохраняет данные перед созданием переменных для представления

и сохраняет список значений для каждого раскрывающегося списка в видепеременная в контроллере.

var $uses = array('Client','Ticket','Userseequeue','Queue','Task','User');
var $useTable = false;

function index() {
    if (!empty($this->data)) {
        $this->Ticket->create();
        $this->Ticketsinqueue->insertData($this->data);
        if ($this->Ticket->save($this->data) && $this->Ticketsinqueue->save($this->data)) {
            $this->Session->setFlash(__('The ticket has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The ticket could not be saved. Please, try again.', true));
        }
    }
    $clientsResult = $this->Client->find('all');
    $userSeeQueuesResult = $this->Userseequeue->find('all', array('conditions' => array('Userseequeue.user_id' => '1') ) );
    $ticketsResult = $this->Ticket->find('all');
    $queuesResult = $this->Queue->find('all');
    $tasksResult = $this->Task->find('all', array('group' => array('Task.ticket_id','Task.queue_id') ) );
    $usersResult = $this->User->find('all');
    $ticketUsers = $this->User->find('list');
    $ticketQueues = $this->Ticket->Queue->find('list');
    $this->set(compact('tickets','userSeeQueues','clients','queuesResult','tasksResult','users','ticketUsers','ticketQueues'));
}

Теперь я вижу список значений переменных контроллера, которые я создал:

<div class="Summary index">
<h2><?php __('Summary');?></h2>
<?php echo $this->Form->create('Ticket');?>
<fieldset>
    <legend><?php __('Add Ticket'); ?></legend>
<?php
    echo $this->Form->input('Ticket.name');
    echo $this->Form->input('Ticket.user_id', array('options' => array($ticketUsers),'empty' => 'None'));
    echo $this->Form->input('Ticket.queue_id', array('options' => array($ticketQueues)));
?>
<?php echo $this->Form->end(__('Submit', true));?>
</fieldset>
...

С этим я могу иметь форму для добавления заявки, а такжеотображать информацию из других моделей / таблиц на одной странице.

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