【问题标题】:How to invoke a specific function before leaving controller method in Yii?在 Yii 中离开控制器方法之前如何调用特定的函数?
【发布时间】:2014-06-05 07:50:32
【问题描述】:

我想在用户离开特定控制器功能时执行特定任务。我有一个产品创建表单,在该表单中,我在函数顶部初始化了一个特定的会话变量。我希望在用户离开此功能时清除此会话变量。即

function actionCreate()
{
Yii::app()->user->setState('somevariable',1);//Setting a variable as the function is executed
//All other implementation goes here
}

现在我想要的是,当用户离开这个 actionCreate 方法并打开其他一些函数时,应该从会话中删除 somevariable 变量。

我知道我可以在其他函数的启动中删除该会话变量,但我必须在其他所有函数中都这样做,这将是乏味的。

有什么帮助吗? 谢谢。

【问题讨论】:

  • 如果会话变量不打算在一个函数之外可见,您确定使用适合您的会话变量吗?
  • 是的,我很确定。以这种形式,我通过 ajax 上传一些图片并将这些图片的名称推送到会话数组中。当使用提交按钮创建产品时,我从会话数组中拍照并将它们保存在产品 ID 中。现在的问题是,当表单验证失败时,图片会被清除,因为在创建函数开始时,我实际上是让图片会话数组为空。我希望当表单验证失败时应该保留这些会话图片文件名。

标签: php session yii


【解决方案1】:

您不能为此使用afterAction,因为无论您的验证结果如何,它都会被触发。验证成功后为什么不清除状态?

public function actionCreate()
{
    // other stuff

    if ($model->validate()) // or save()
    {
        // success, clear the state
    }
    else
    {
        // failed, leave the state as it is
    }
}

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2017-05-13
    相关资源
    最近更新 更多