2016-10-11 77 views
1

問題描述

我一直在試圖讓captainhook爲一個模型,卻不能這樣做。 Captainhook是一個php庫,它允許我們添加網址和雄辯或自定義事件,以將事件數據發送到我們根據事件指定爲HTTP請求的URL。Laravel - 爲模型eloquent.saved事件不會被炒魷魚

我不知道我在哪裏犯了一個錯誤,但我認爲Laravel沒有解僱eloquent.saved或任何其他事件。我遵循自述文件中提到的所有確切說明。

這裏是我的項目文件可能有助於解決該問題:

任何幫助是極大的讚賞。

PHP人員鉤:列表

+----+-----------+------------------------+----------------------------+ 
| id | tenant_id | url     | event      | 
+----+-----------+------------------------+----------------------------+ 
| 7 |   | http://localhost:10000 | eloquent.saved \App\Vessel | 
+----+-----------+------------------------+----------------------------+ 

composer.json
{ 
"name": "laravel/laravel", 
"description": "The Laravel Framework.", 
"keywords": [ 
    "framework", 
    "laravel" 
], 
"license": "MIT", 
"type": "project", 
"require": { 
    "laravel/framework": "5.2.39", 
    "league/flysystem-aws-s3-v3": "~1.0", 
    "venturecraft/revisionable": "1.*", 
    "maknz/slack": "^1.7", 
    "phpmailer/phpmailer": "^5.2", 
    "snowfire/beautymail": "dev-master", 
    "mpociot/captainhook": "~2.0", 
    "doctrine/dbal": "^2.5", 
    "predis/predis": "^1.1", 
    "torann/currency": "^0.3.0", 
    "yajra/laravel-datatables-oracle": "~6.0" 
}, 
"require-dev": { 
    "fzaninotto/faker": "~1.4", 
    "mockery/mockery": "0.9.*", 
    "phpunit/phpunit": "~4.0", 
    "symfony/css-selector": "2.8.*|3.0.*", 
    "symfony/dom-crawler": "2.8.*|3.0.*" 
}, 
"autoload": { 
    "classmap": [ 
    "database", 
    "app/Libraries/ImageUploaderPHP" 
    ], 
    "psr-4": { 
    "App\\": "app/" 
    }, 
    "files": [ 
    "app/Support/helpers.php" 
    ] 
}, 
"autoload-dev": { 
    "classmap": [ 
    "tests/TestCase.php" 
    ] 
}, 
"scripts": { 
    "post-root-package-install": [ 
    "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 
    ], 
    "post-create-project-cmd": [ 
    "php artisan key:generate" 
    ], 
    "post-install-cmd": [ 
    "Illuminate\\Foundation\\ComposerScripts::postInstall", 
    "php artisan optimize" 
    ], 
    "post-update-cmd": [ 
    "Illuminate\\Foundation\\ComposerScripts::postUpdate", 
    "php artisan optimize" 
    ] 
}, 
"config": { 
    "preferred-install": "dist", 
    "process-timeout": 0 
} 
} 

.ENV

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=1yoaL71DDzGvey0BwVy25hySFMdBaEoA 

DB_HOST=127.0.0.1 
DB_DATABASE=myfyba 
DB_USERNAME=root 
DB_PASSWORD= 

CACHE_DRIVER=redis 
SESSION_DRIVER=redis 
QUEUE_DRIVER=redis 
REDIS_HOST=localhost 
.... 

配置/ captain_hook.php

<?php 

/** 
* This file is part of CaptainHook arrrrr. 
* 
* @license MIT 
*/ 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Event listeners 
    |-------------------------------------------------------------------------- 
    | 
    | This array allows you to define all events that Captain Hook should 
    | listen for in the application. By default, the Captain will just 
    | respond to eloquent events, but you may edit this as you like. 
    */ 
    'listeners' => ['eloquent.*'], 

    /* 
    |-------------------------------------------------------------------------- 
    | Webhook filter closure 
    |-------------------------------------------------------------------------- 
    | 
    | If your webhooks are scoped to a tenant_id, you can modify 
    | this filter function to return only the webhooks for your 
    | tenant. This function is applied as a collection filter. 
    | The tenant_id field can be used for verification. 
    | 
    */ 
    'filter' => function ($webhook) { 
     return true; 
    }, 

    /* 
    |-------------------------------------------------------------------------- 
    | Webhook data transformer 
    |-------------------------------------------------------------------------- 
    | 
    | The data transformer is a simple function that allows you to take the 
    | subject data of an event and convert it to a format that will then 
    | be posted to the webhooks. By default, all data is json encoded. 
    | The second argument is the Webhook that was triggered in case 
    | you want to transform the data in different ways per hook. 
    | 
    | You can also use the 'Foo\[email protected]' notation if you want. 
    | 
    */ 
    'transformer' => function ($eventData, $webhook) { 
     return json_encode($eventData); 
    }, 

    /* 
    |-------------------------------------------------------------------------- 
    | Webhook response callback 
    |-------------------------------------------------------------------------- 
    | 
    | The response callback can be used if you want to trigger 
    | certain actions depending on the webhook response. 
    | This is unused by default. 
    | 
    | You can also use the 'Foo\[email protected]' notation if you want. 
    | 
    */ 
    'response_callback' => function ($webhook, $response) { 
     // Handle custom response status codes, ... 
    }, 

    /* 
    |-------------------------------------------------------------------------- 
    | Logging configuration 
    |-------------------------------------------------------------------------- 
    | 
    | Captain Hook ships with built-in logging to allow you to store data 
    | about the requests that you have made in a certain time interval. 
    */ 
    'log' => [ 
     'active' => true, 
     'storage_quantity' => 50, 
    ], 
]; 

回答

1

該軟件包的文檔說,Eloquent將爲App\User模型的updated事件觸發名爲eloquent.updated \App\User的事件,但它實際上將觸發名爲eloquent.updated: App\User的事件。

試着改變你的網絡掛接到:

eloquent.saved: App\Vessel

+0

謝謝!我會試一試並接受。 –

+0

+1該死的工作。非常感謝。你能告訴我你從文檔或其他地方學到了什麼嗎? –

+0

'Illuminate \ Database \ Eloquent \ Model @ fireModelEvent' ...'$ event =「eloquent。{$ event}:」.static :: class;'處理觸發事件,所以它通過雄辯命名。 – lagbox