我正在设计一个应用程序,其中所有实体(物品、供应商、客户、联系人等)有一个特殊的对象叫做,井......对象(每个表的每一行都有一个object_id列)。(例如,审计跟踪,对象标识=32665,用户标识=312,详细信息=更新字段,bla bla)。
因此,我想创建一个具有方法(可能是create_new_object)的组件,该方法将从对象控制器中调用add方法(我修改了该方法,以便在没有人工交互的情况下创建一个新实体,我的代码如下)。
如何从一个组件调用一个控制器方法?
版本
我忘了输入密码,抱歉。
这是我的对象控制器
<?php
namespace App\Controller;
use App\Controller\AppController;
class ObjectsController extends AppController
{
public function add($type = null)
{
if($type)
{
$object = $this->Objects->newEntity();
$object = $this->Objects->patchEntity($object, $this->request->getData());
$object->type = $type;
if ($this->Objects->save($object)) {
$this->Flash->success(__('The object has been saved.'));
$resultJ = json_encode(array('result' => 'success',
'object_id' => $object->id));
}
else
{
$resultJ = json_encode(array('result' => 'error',
'message' => 'The object could not be save. Please, try again.'));
}
}
else
{
$resultJ = json_encode(array('result' => 'error',
'message' => 'An object type is necessary. Please, try again.o'));
}
$this->response->type('json');
$this->response->body($resultJ);
return $this->response;
}
}
我有三个重要的实体...
1.文章。
1.顾客。
1.供应商。
然后,我有另一种实体(我称之为他们,二级秩序),现场联系人,地址,电话,电子邮件,城市,国家,等等。
每个实体的每个对象(主要和次要)都必须有一个object_id属性引用一个Object对象(),这对于审计跟踪很有用,例如。因此,我计划创建一个组件,名为IdentificationComponent,其内容如下...
public function create_and_object()
{
bla bla bla... Object->add($type_of_object);
return $generated_object_id;
}
最后,我希望在AppController中实现我的组件(ObjectController有一个特殊的例外)。我希望每个实体在创建时都创建一个新的Object对象。
1条答案
按热度按时间yzuktlbb1#
最后,我创建了一个组件(CookBook指出这是为控制器编写可重用代码的正确方法)。
一方面,这是我的组件代码...
另一方面,这是对控制器方法的调用...
正如您所看到的,我使用类似于控制器名称的参数调用了getNewObjectId方法。
我希望这对将来的某个人有帮助。
感谢@GregSchmidt和@ndm的意见和帮助。
祝你愉快