Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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
对非对象的成员函数save()的CakePHP调用_Php_Cakephp_Inflector - Fatal编程技术网

对非对象的成员函数save()的CakePHP调用

对非对象的成员函数save()的CakePHP调用,php,cakephp,inflector,Php,Cakephp,Inflector,让我们从我的代码的简化版本开始: 模型:Sku.php class Sku extends AppModel { } class Sku extends AppModel { var $name = 'Sku'; } 控制器:SkusController.php class SkusController extends AppController { public function admin_add() { $this->layout = 'admi

让我们从我的代码的简化版本开始:

模型:Sku.php

class Sku extends AppModel {

}
class Sku extends AppModel {
  var $name = 'Sku';
}
控制器:SkusController.php

class SkusController extends AppController {

    public function admin_add() {

        $this->layout = 'admin';

        if($this->request->is('post')) {
            if($this->Sku->save($this->request->data)) {
                // Do stuff
            }
            else // Do stuff
        }

    }

}
查看:SKU>管理添加.ctp

<?php echo $this->Form->create('Sku', array('type'=>'file')); ?>
<?php echo $this->Form->input('Sku.item_no')); ?>
<?php echo $this->Form->input('Sku.size'); ?>
<?php echo $this->Form->input('Sku.color'); ?>
<button type="submit">Save SKU</button>
<?php echo $this->Form->end(); ?>
如果我使用了所有正确的命名约定,我不应该省略前一行吗?此外,如果我按照相同的命名约定更改所有文件名和类名以进行测试,那么它在没有$uses变量的情况下工作。这让我相信代码中的其他地方存在某种冲突。关于为什么会发生这种情况,或者在哪里寻找潜在问题,有什么建议吗


提前谢谢

编辑:看起来拐点不能将复数变成单数:。因此,要么使用$uses,要么将规则添加到拐点

您没有为控制器使用数组或布尔值::$uses属性

public $uses = 'Sku';
应该是:

public $uses = array('Sku');
实际上,如果控制器和模型符合约定,则根本不需要定义它

阅读$uses的文档

$使用
包含此控制器模型的类名的数组 使用

示例:
public$uses=array('Product'、'Post'、'Comment')

可以设置为多个值以表示不同的选项:

  • true使用默认的屈折模型名称
  • array()仅使用父类中定义的模型
  • false完全不使用模型,也不要与父类合并
  • 数组('Post','Comment')仅使用Post和Comment模型。模型也将与父类合并
默认值为true


试试下面的代码,我想,它会工作的

模型:Sku.php

class Sku extends AppModel {

}
class Sku extends AppModel {
  var $name = 'Sku';
}

$uses不需要是数组,除非控制器使用多个模型。此外,我声明我正在使用适当的约定,那么为什么我甚至需要包含$uses。你的答案已经包含在问题中。看起来屈折符不能将复数变成单数:你没有遵循命名约定。检查