对非对象的成员函数save()的CakePHP调用
让我们从我的代码的简化版本开始: 模型:Sku.php对非对象的成员函数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
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。你的答案已经包含在问题中。看起来屈折符不能将复数变成单数:你没有遵循命名约定。检查