cakephp在保存闪存消息之前

cakephp在保存闪存消息之前,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,是否有方法在beforeSave功能中设置模型中的flash消息或错误消息,并在视图中读取错误/消息。我不是在说验证错误。根据手头的可用信息,应该可以采用以下方法: <?php class AppModel extends Model { public $lastErrorMessage; public function beforeSave(...) { $this->lastErrorMessage = null; return

是否有方法在beforeSave功能中设置模型中的flash消息或错误消息,并在视图中读取错误/消息。我不是在说验证错误。

根据手头的可用信息,应该可以采用以下方法:

<?php
class AppModel extends Model {

    public $lastErrorMessage;

    public function beforeSave(...) {
        $this->lastErrorMessage = null;
        return true;
    }

}

<?php
class MyModel Extends AppModel {

    public function beforeSave(...) {
        parent::beforeSave(..);
        if (error) {
            $this->lastErrorMessage = 'Some error message';
            return false;
        }
        return true;
    }
}

<?php
class MyController extends AppController {

    public function action() {
        if ($this->MyModel->save($this->request->data)) {
        } else {
            $message = "Some default message";
            if ($this->MyModel->lastErrorMessage) {
                $message = $this->MyModel->lastErrorMessage;
            }
            $this->Session->setFlash($message);
        }
    }
}

以下内容应与现有信息配合使用:

<?php
class AppModel extends Model {

    public $lastErrorMessage;

    public function beforeSave(...) {
        $this->lastErrorMessage = null;
        return true;
    }

}

<?php
class MyModel Extends AppModel {

    public function beforeSave(...) {
        parent::beforeSave(..);
        if (error) {
            $this->lastErrorMessage = 'Some error message';
            return false;
        }
        return true;
    }
}

<?php
class MyController extends AppController {

    public function action() {
        if ($this->MyModel->save($this->request->data)) {
        } else {
            $message = "Some default message";
            if ($this->MyModel->lastErrorMessage) {
                $message = $this->MyModel->lastErrorMessage;
            }
            $this->Session->setFlash($message);
        }
    }
}

这可能会破坏MVC,因为控制器应该承担此任务,您可以在控制器的
beforeRender()
操作中设置一条消息。你到底想达到什么目标?@Ross为什么会打破MVC?模型应将错误消息传递回控制器,控制器将错误消息显示给view@Ross请参见此备选方案,只要错误通过控制器传递,那么MVC就可以正常工作。这可能会破坏MVC,因为控制器应该负责此任务,您可以在
beforeRender()中设置一条消息
控制器的操作。你到底想达到什么目标?@Ross为什么会打破MVC?模型应将错误消息传递回控制器,控制器将错误消息显示给view@Ross请参阅此备选方案,只要错误通过控制器传递,那么MVC就可以正常工作