我一直试图让captainhook为模型工作而无法这样做。 Captainhook是一个php库,它允许添加URL和雄辩或自定义事件,以便将事件数据发送到我们根据事件指定的URL作为HTTP post请求。
我不确定我在哪里犯了错误,但我认为Laravel没有解雇eloquent.saved
或任何其他事件。我按照自述文件中提到的所有确切说明进行操作。
以下是我的项目文件,可能有助于解决问题:
非常感谢任何帮助。
+----+-----------+------------------------+----------------------------+
| id | tenant_id | url | event |
+----+-----------+------------------------+----------------------------+
| 7 | | http://localhost:10000 | eloquent.saved \App\Vessel |
+----+-----------+------------------------+----------------------------+
{
"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
}
}
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
....
<?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\Class@transform' 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\Class@handle' 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,
],
];
答案 0 :(得分:1)
该软件包的文档说Eloquent将为eloquent.updated \App\User
模型App\User
事件触发一个名为updated
的事件,但它实际上会触发一个名为eloquent.updated: App\User
的事件
尝试将您的webhook更改为:
eloquent.saved: App\Vessel