Php 自定义删除方法不支持';t调用自定义数据源
我正在使用自定义数据源来使用webservice。 创建、读取和更新工作正常,但删除不起作用 这是我在控制器中调用delete方法的代码Php 自定义删除方法不支持';t调用自定义数据源,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,我正在使用自定义数据源来使用webservice。 创建、读取和更新工作正常,但删除不起作用 这是我在控制器中调用delete方法的代码 public function delete($id){ $this->autoRender = false; debug($this->Article->delete($id)); } 这里是我的数据源中的代码 public function delete(Model $Model, $id =
public function delete($id){
$this->autoRender = false;
debug($this->Article->delete($id));
}
这里是我的数据源中的代码
public function delete(Model $Model, $id = null) {
echo "Display a message if this method is called";
$json = $this->Http->post(CakeSession::read('Site.url') . '/webservice/delete/', array(
'id' => $id,
'apiKey' => $this->config['apiKey'],
'model' => $Model->name
));
$res = json_decode($json, true);
if (is_null($res)) {
$error = json_last_error();
throw new CakeException($error);
}
return true;
}
但是当我想删除一个项目时,debug()代码>显示false
。
我没有其他显示器。
我不明白为什么我的delete方法调用不正确。
我的代码有问题吗
谢谢让我们检查一下:您只向方法传递了一个参数:
$this->Article->delete($id)
根据您创建的方法,第一个必需参数是模型
。第二个是$id
:
public function delete(Model $Model, $id = null)
在该方法中,您希望同时使用这两个参数。在这里:
'id' => $id
在这里:
'model' => $Model->name
基于此,您需要查看如何调用此方法。顺便说一句,如果你想覆盖delete()
方法,根据,你需要这样的东西:delete(int$id=null,boolean$cascade=true)
我的数据源类扩展了类数据源
,所以delete()
覆盖依赖于这个delete()
我认为:数据源代码取自手册,应该可以正常工作。你能给我们看一下debug($res)
的输出吗?我在核心类中挖掘,找到了为什么不调用我的delete()。事实上,在delete方法触发调用Model.php上的_findCount()之前。如果(!method_存在($db,'calculate')| |!method_存在($db,'expression')){return false;},则存在一个。在我的datasource类中,我只有方法calculate(),没有表达式()。所以我实现了这个功能,现在它开始工作了