0

我创建了以下模型来链接 2 个关系表:

    class Ficha extends AppModel {

    //public $useTable = 'ficha_seg';

    var $primaryKey = 'id_ficha';

    var $name = 'Ficha';
    var $belongsTo = array(
        'Perigo' => array(
            'className'    => 'Perigo',
            'foreignKey'   => false,
            'conditions' => 'Perigo.id_fichas = Ficha.id_ficha'
        )
    );
}

现在,我有一个需要来自 Ficha 类的数据的表单,然后被重定向到另一个 ctp 页面,我将在其中输入“Perigos”表的数据。但是,由于我仍然是 cakephp 的新手,我很难构建第二种形式来在“Perigos”表中插入数据。这是我目前构建的与第二种形式相关的代码:

FichasController.php(应该将数据保存在“Perigos”表上的方法:

public function preencher_ficha(){

if ($this->request->is('ficha')) {
        $this->Ficha->create();

    if ($this->Ficha->Perigo->save($this->request->data)) {
        $last_id=$this->Ficha->getLastInsertID();
        $this->Session->setFlash('Your post has been updated '.$last_id.'.');
        //$this->redirect(array('action' => 'preencher_ficha'));
    } else {
        $this->Session->setFlash('Unable to qualquer coisa your post.');
    }
}   
}

preencher_ficha.ctp 文件格式为:

echo $this->Form->create('Ficha->Perigo', array('action' => 'index'));
echo $this->Form->input('class_subst', array('label' => 'Classificação:'));
echo $this->Form->input('simbolos_perigo', array('label' => 'Símbolos:'));
echo $this->Form->input('frases_r', array('label' => 'Frases:'));
echo $this->Form->end('Finalizar Ficha'); 

在这里我猜创建部分是错误的,但我认为我在控制器部分也有错误。

4

1 回答 1

1

我建议您以其他方式构建您的观点。如果您想将数据保存在Perigos表格中,请使用 Perigos 视图中的save方法PerigosController和使用save.ctp文件来显示您要使用的表格。

无论如何,如果您想按照自己的方式进行操作,您的表单应该指向preencher_ficha提交数据的函数:

echo $this->Form->create('Ficha->Perigo', array('action' => 'preencher_ficha'));

另外,你必须改变这个:

if ($this->request->is('ficha')) {

对此

if ($this->request->is('post')) {

这只是一种检查数据是来自 POST 方法还是来自 GET 方法的一种方法。

而且,只是一个建议:不要为控制器或模型使用西班牙语名称。如果你使用英文的,那么遵循 CakePHP 的命名约定会更简单,它会更有意义,并且会节省你一些时间。

于 2012-12-04T11:52:20.610 回答