【问题标题】:cakePHP saveMany not workingcakePHP saveMany 不工作
【发布时间】:2013-10-19 21:25:29
【问题描述】:

在安装 cake 2.3 时遇到 saveMany() 问题。它没有从控制器或模型返回任何错误(我也删除了所有验证)。我检查了数据是否正在传递,这是输出:

array(
    'Xfilter' => array(
        'Xfilter0user_id' => '2',
        'Xfilter0name' => 'Modern Age (1991-present)',
        'Xfilter0search' => '/listings/find/coverDateBetween:1991 - 2014',
        'Xfilter0user_tab' => '1',
        'Xfilter1user_id' => '2',
        'Xfilter1name' => 'Copper Age (1984-1991)',
        'Xfilter1search' => '/listings/find/coverDateBetween:1984 - 1991',
        'Xfilter1user_tab' => '1'
    )
)

这是我的控制器:

public function add() {
        if ($this->request->is('post')) {
            //debug($this->request->data);          
            //$this->Xfilter->create();
            if ($this->Xfilter->saveMany($this->request->data['Xfilter'])) {
                $this->Session->setFlash(__('The Xfilter has been saved'));
                $this->redirect($this->referer(true));
                echo debug( $this->Xfilter->invalidFields() );
            } else {
                $this->Session->setFlash(__('The Xfilter could not be saved. Please, try again.'));
            }
        }
        $users = $this->Xfilter->User->find('list');
        $this->set(compact('users'));
    }

我的看法:

<?php echo $this->Form->create('Xfilter'); ?>

    <?php if(!empty($xfilters)){ foreach ($xfilters as $key => $xfilter): ?>
        <fieldset class="pure-u-1"> 

            <?php
                echo $this->Form->input('Xfilter'.$key.'user_id', array( 'value'=>'2','type'=>'hidden'));                
                echo $this->Form->input('Xfilter'.$key.'name', array('value'=>$xfilter['Xfilter']['name']));
                echo $this->Form->input('Xfilter'.$key.'search', array('value'=>$xfilter['Xfilter']['search']));
                echo $this->Form->input('Xfilter'.$key.'user_tab', array('label' => 'Set as a filter tab?','value'=>'1'));
            ?>            
        </fieldset>


    <?php endforeach;} ?>
    <?php 
        $options = array(
            'label' => __('Submit'),
            'class' => 'pure-button pure-button-primary'
        );
        echo $this->Form->end($options);
    ?>

关于我缺少什么的任何好主意?

【问题讨论】:

    标签: cakephp cakephp-2.3


    【解决方案1】:

    您的数据格式不正确,它必须是数组的数组,无论是在

    array(
        array('field1' => 'valuea', 'field2' => 'valuea'),
        array('field1' => 'valueb', 'field2' => 'valueb'),
        array('field1' => 'valuec', 'field2' => 'valuec')
    )
    

    或在

    array(
        array('Model' => array('field1' => 'valuea', 'field2' => 'valuea')),
        array('Model' => array('field1' => 'valueb', 'field2' => 'valueb')),
        array('Model' => array('field1' => 'valuec', 'field2' => 'valuec'))
    )
    

    格式。

    第一种样式可以通过在表单助手中使用正确的dot notation来实现:

    // -----------------------------v -----------v spot the dot
    echo $this->Form->input('Xfilter.' . $key . '.user_id', array(
        'value' => '2',
        'type' => 'hidden'
    ));
    

    即字段名称应以Xfilter.0.user_id 之类的形式结束。

    另见

    【讨论】:

    • 感谢 ndm,点不见了。 echo $this->Form->input('Xfilter.'.$key.'.user_id', array('value'=>'2','type'=>'hidden'));对于所有输入作品
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多