CakePHP为客户端创建约会



我正在CakePHP中构建一个简单的预订系统,使用3个表来创建预订。他们是客户、医生和预约。客户和医生可以有多个预约,但一个预约只能有一个客户和一个医生。

我已经建立了创建和编辑客户端部分很好,但努力建立创建预约,并将它们链接到医生和客户端。我已经在模型中设置了关系,它们可以很好地提取数据,所以我知道它们按预期工作。

例如,如果我想为ID为1的客户预约,我会访问:/appointments/add/1然后在视图中,它会有这样的内容:

   <h1>Book Appointment <em>for</em> <?php echo $client['Client']['firstname'] . " " . $client['Client']['lastname']; ?></h1>
<?php echo $this->Form->create('Appointment', array('url' => array('admin'=>true,'controller'=>'appointments','action'=>'add',$client_id))); ?>
    <fieldset id="post-form">
        <ul>
            <li>
                <?php echo $this->Form->input('client_id', array('type' => 'hidden','value'=>$client_id)); ?>
                <?php echo $this->Form->input('doctor_id', array('label' => '<strong>Choose Doctor</strong>',$doctors)); ?>
            </li>
            <li>
                <?php echo $this->Form->input('datetime', array('label' => '<strong>Date and Time</strong>')); ?>
            </li>
            <li>
                <?php echo $this->Form->input('treatment', array('label' => '<strong>Treatment</strong>')); ?>
            </li>
            <li class="sep clearfix">
                <input class="submit" type="submit" name="submit" value="Book Appointment" />
            </li>
        </ul>
    </fieldset>
    <?php echo $this->Form->end(); ?>

因此,正如您所看到的,我希望使用传递的id(在约会表中称为client_id)在头中显示客户端的名称。你应该可以从下拉菜单中选择医生的名字。

这是目前为止我的控制器动作:

function admin_add($client_id)
{
    $this->set('client_id', $client_id);
    $this->set('doctors', $this->Appointment->Doctor->find('list'));
    if (!empty($this->data))
    {
        if ($this->Appointment->save($this->data))
        {
            $this->Session->setFlash('Your post has been saved.');
            $this->redirect(array('admin' => true, 'controller' => 'appointments', 'action' => 'index'));
        }
    }
}

然而,我的医生名单没有被创建…有人能帮忙吗?由于

EDIT:还注意到每次我提交表单时,它都会用ID为1覆盖相同的约会。所以它不会创建一个新的约会…什么好主意吗?

没有显示您的客户端名称,因为您没有在控制器中设置客户端数据。

$this->set('client', $this->Appointment->Client->find('first', array('conditions' => array('Client.id' => $client_id))));

不确定这是否会解决缺少医生列表的问题,但是您在create方法

中缺少模型名称
$this->Form->create('Appointment', ...);

最新更新