CakePHP不确定它是否';这是对的
我有一个控制器:转售,我在管理员控制器中,需要创建一个新的转售。。我该怎么做 第一种选择: 管理员表单调用/转售/添加转售 第二个选项:Administrator有一个addResale方法,用于加载转售模型并将其插入 我该怎么办?CakePHP不确定它是否';这是对的,php,cakephp,Php,Cakephp,我有一个控制器:转售,我在管理员控制器中,需要创建一个新的转售。。我该怎么做 第一种选择: 管理员表单调用/转售/添加转售 第二个选项:Administrator有一个addResale方法,用于加载转售模型并将其插入 我该怎么办? 谢谢管理员控制器不应该加载转售控制器-这应该是两个控制器都使用的模型。您应该将转售模型加载到控制器文件顶部的$uses=array()属性中的管理员控制器中: class AdministratorController extends AppController {
谢谢
管理员
控制器不应该加载转售
控制器-这应该是两个控制器都使用的模型。您应该将转售
模型加载到控制器文件顶部的$uses=array()
属性中的管理员
控制器中:
class AdministratorController extends AppController {
var $uses = array('Resale', //the rest of your models);
public function createResale() {
$this->Resale->create();
$this->Resale->set($this->data['Resale']);
$this->Resale->save();
}
}
其他选项是,您可以使用Ajax为您发布请求,也可以在管理员控制器中使用$this->requestAction()
在转售控制器中使用处理功能:
// administrator controller
public function createResale() {
// define your data here
$result = $this->requestAction('resales/create', array($data_array));
}
class AdministratorController extends AppController {
var $helpers = array('Session', // any others here);
有关请求操作的更多信息,请参阅手册:
编辑
您刚刚询问了有关视图的问题。在这种情况下,实际上不需要为createResale()
创建视图,您可能需要做的是设置一个,然后重定向回表单。您需要确保已将会话帮助程序包含在控制器的顶部:
// administrator controller
public function createResale() {
// define your data here
$result = $this->requestAction('resales/create', array($data_array));
}
class AdministratorController extends AppController {
var $helpers = array('Session', // any others here);
然后,您可以阻止视图的布局和渲染,执行您的操作,并使用结果消息设置会话闪存:
public function createResale() {
// don't render a view or layout
$this->layout = '';
$this->render(false);
// process your request
$result = // do stuff... return true or false for result
$msg = $result ? 'Added successfully!' : 'Error adding resale!';
// set flash message
$this->Session->setFlash($msg);
// return to that form
$this->redirect(array('action' => 'formYouCameFrom'));
}
现在在表单上,您只需执行以下操作:
echo $this->Session->flash();
。。。这将输出结果。如果我正确地阅读了您的问题,我将使用选项1,假设“管理员表单”是指表单视图本身。它更具描述性和宁静。另外,控制器不应该与其他控制器一起工作,它们应该彼此不可知。关于我的管理员表单操作,请类似/resales/create?它应该是
/Administrator/createResale
-您可以发布到resales
表单,但是,在多种情况下,您必须处理重定向,使其退出。好的,我的管理员控制器需要有一个视图,对吗?因此,我创建了一个方法,该方法将显示带有表单的视图。。然后我为帖子创建了另一个方法。。我说的对吗?我想你错了因为我有这个/administrators/formforcreateanewersale。。然后,我需要管理员控制器中的formForCreateANewResale操作。。是吗?正确,窗体的操作和呈现窗体的视图。您也可以使用与上面相同的操作并使用if(isset($this->data))
来确定是处理表单的数据还是只显示表单。也许是时候阅读CakePHP教程了。