cakephp:无法在添加时预先选择相关模型

时间:2010-12-30 12:26:10

标签: cakephp

我想我错过了什么。 (cakephp的)

我与雇主之间有很多关系。当我查看申请人时,我看到相关的雇主表完全正常工作(感谢烘烤!)

但如果我点击“新雇主”,我希望申请人下拉预选,这样我就可以隐藏它。我只是想弄清楚我如何将applicant_id传递给雇主的添加视图。

(如果我从相关雇主表中为申请人编辑雇主,则applicant_id确实通过了)

有人可以帮忙吗?请? Vauneen

1 个答案:

答案 0 :(得分:0)

简单。将applicant_id传递给您的employers/add操作。

执行此操作的一种方法是通过URL参数。示例:/employers/add/3会将“3”传递给添加操作,这可以作为申请人ID。这是控制器代码:

function add($applicantId = null) {
    // Optional: Check if $applicantId is provided
    if (!$applicantId) {
        $this->Session->setFlash('Applicant ID is missing.');
        $this->redirect(array('action' => 'index'));
    }
    // Process action
    if (!empty($this->data)) {
        $this->Employer->create();
        if ($this->Employer->save($this->data)) {
            // etc ...
        }
    } else {
        // Insert default values such as applicant_id into the form
        $this->data = array(
            'Employer' => array(
                'applicant_id' => $applicantId
            )
       );
    }
}

现在,您需要确保所有链接都提供申请人ID参数:

echo $this->Html->link('Add Employer', array('controller' => 'employers', 'action' => 'add', 3);

(注意:最后一个元素“3”是申请人ID)

最后,您可以在add.ctp文件中隐藏申请人ID:

echo $this->Form->input('applicant_id', array('type' => 'hidden'));

希望有所帮助!

相关问题