Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/cakephp/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我使用其他表时,如何在表中保存数据';用cakephp显示的数据?_Cakephp - Fatal编程技术网

当我使用其他表时,如何在表中保存数据';用cakephp显示的数据?

当我使用其他表时,如何在表中保存数据';用cakephp显示的数据?,cakephp,Cakephp,抱歉,如果我的问题含糊不清,我试图保持尽可能简单,我正在cakephp中使用以下控制器: var $uses = array('Client','Ticket','Userseequeue','Queue','Task','User'); var $useTable = false; function index() { $clientsResult = $this->Client->find('all'); $userSeeQueuesResult = $this

抱歉,如果我的问题含糊不清,我试图保持尽可能简单,我正在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创建的普通add视图中那样正确地填充其关系表中的下拉列表。它当前用我在此控制器中使用的所有表填充下拉列表

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'));
}
如果有人能帮助我或在正确的方向上帮助我,我将不胜感激。

我通过以下方式实现了这一目标:

让控制器在为视图创建变量之前先保存数据

以及将每个下拉列表的值列表保存为控制器中的变量

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>
...

...
有了这个,我可以在一个页面上创建一个表单来添加票据,以及显示来自其他模型/表格的信息