【问题标题】:Custom Events Manager in Phalcon\MVC\Models throws errorsPhalcon\MVC\Models 中的自定义事件管理器引发错误
【发布时间】:2013-09-29 19:46:43
【问题描述】:

我正在尝试使用 http://docs.phalconphp.com/en/latest/reference/models.html#using-a-custom-events-manager 中描述的事件管理器示例。

class Products extends Phalcon\Mvc\Model
{
    public function initialize()
    {
        $eventsManager = new Phalcon\Events\Manager();

        $eventsManager->attach('model', function($event, $robot) {
            // Do something (or nothing at all).
            return true;
        });
        $this->setEventsManager($eventsManager);

    $this->setSource('products');
    }
}

$o = Products::findFirst();
$o->we = 5;
$o->save();

这会导致以下错误:

脚本引发 E_ERROR 并带有消息“Phalcon\Mvc\Model\Manager::notifyEvent(): Call to method fire() on a non-object”

我在 EventsManager 设置中缺少什么?

我在 Phalcon 1.3.0 上。

谢谢, 手鞠

【问题讨论】:

    标签: php phalcon


    【解决方案1】:

    这看起来像一个错误:

        if (Z_TYPE_P(custom_events_manager) == IS_ARRAY) { 
    +       zval *mgr;
    
            PHALCON_INIT_NVAR(entity_name);
            phalcon_get_class(entity_name, model, 1 TSRMLS_CC);
    -       if (phalcon_array_isset(custom_events_manager, entity_name)) {
    +       if (phalcon_array_isset_fetch(&mgr, custom_events_manager, entity_name)) {
    
                PHALCON_INIT_NVAR(fire_event_name);
                PHALCON_CONCAT_SV(fire_event_name, "model:", event_name);
    
                PHALCON_INIT_NVAR(status);
    -           phalcon_call_method_p2(status, custom_events_manager, "fire", fire_event_name, model);
    +           phalcon_call_method_p2(status, mgr, "fire", fire_event_name, model);
                if (PHALCON_IS_FALSE(status)) {
                    RETURN_CTOR(status);
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      相关资源
      最近更新 更多