Help with Hook
Collapse
X
-
No worries, typos are the achilles heel of every coder :-)
For future reference I spotted the error by reading this line from the error msg:
"Call to undefined function Espo\Custom\Hooks\Location\arry_keys()" -
Help with Hook
I have been trying to get the following Hook to work:
PHP Code:<?php namespace Espo\Custom\Hooks\Location; use Espo\Core\Hooks\Base; use Espo\ORM\Entity; class LocationAddressCorrect extends \Espo\Core\Hooks\Base { public static $order = 20; public function afterSave(Entity $entity) { // list of words to correct with replacement $abvAddress = Array( 'Township' => 'Twp', 'Twp.' => 'Twp', 'Road' => 'Rd', 'Rd.' => 'Rd', 'Private' => 'Pvt', 'Pvt.' => 'Pvt', 'Co.' => 'Co', 'County Road' => 'CR', 'County Rd' => 'CR', 'Co Rd' => 'CR', 'Co Road' => 'CR', 'State Route' => 'SR', 'State Rte' => 'Sr', 'St Rte' => 'Sr', 'Avenue' => 'Ave', 'Parkway' => 'Pkwy', 'Apartment' => 'Apt', 'Apt.' => 'Apt', 'Boulevard' => 'Blvd', 'Blvd.' => 'Blvd', 'Place' => 'Pl', 'Pl.' => 'Pl', 'Room' => 'Rm', 'Rm.' => 'Rm', 'Center' => 'Ctr', 'Ctr.' => 'Ctr', 'Plaza' => 'Plz', 'Plz.' => 'Plz', 'Suite' => 'Ste', 'Ste.' => 'Ste', 'Circle' => 'Cir', 'Cir.' => 'Cir', 'Ridge' => 'Rdg', 'Rdg.' => 'Rdg', 'Court' => 'Ct', 'Ct.' => 'Ct', 'North' => 'N', 'Drive' => 'Dr', 'Dr.' => 'Dr', 'Square' => 'Sq', 'Sq.' => 'Sq', 'East' => 'E', 'E.' => 'E', 'Expressway' => 'Expy', 'Street' => "st", 'St.' => 'St', 'South' => 'S', 'S.' => 'S', 'Heights' => 'Hts', 'Hts.' => 'Hts', 'Station' => 'Sta', 'Sta.' => 'Sta', 'West' => 'W', 'W.' => 'W', 'Highway' => 'Hwy', 'Terrace' => 'Ter', 'Ter.' => 'Ter', 'Northeast' => 'Ne', 'Ne.' => 'Ne', 'Island' => 'Is', 'Is.' => 'Is', 'Trail' => 'Trl', 'Northwest' => 'Nw', 'Nw.' => 'Nw', 'Junction' => 'Jct', 'Jct.' => 'Jct', 'Turnpike' => 'Tpke', 'Tpke.' => 'Tpke', 'Southeast' => 'Se', 'Se.' => 'Se', 'Lake' => 'Lk', 'Lk.' => 'Lk', 'Valley' => 'Vly', 'Vly.' => 'Vly', 'Southwest' => 'Sw', 'Sw.' => 'Sw', 'Lane' => 'Ln', 'Ln.' => 'Ln', '.' => '', ',' => '', ); $streetAddress = $entity->get('locationOfInterestStreet'); $streetAddressCorrect = str_replace(arry_keys($abvAddress), $abvAddress, $streetAddress); $correctedStreetAddress = $streetAddressCorrect; $entity->set('locationOfInterestStreet', $correctedStreetAddress); } }
[2021-01-23 10:25:57] Espo.ERROR: Slim Application Error Type: Error Code: 0 Message: Call to undefined function Espo\Custom\Hooks\Location\arry_keys() File: /var/www/espocrm/custom/Espo/Custom/Hooks/Location/LocationAddressCorrect.php Line: 101 Trace: #0 /var/www/espocrm/application/Espo/Core/HookManager.php(111): Espo\Custom\Hooks\Location\LocationAddressCorrect->afterSave() #1 /var/www/espocrm/application/Espo/Core/Repositories/Database.php(287): Espo\Core\HookManager->process() #2 /var/www/espocrm/application/Espo/ORM/Repository/RDBRepository.php(140): Espo\Core\Repositories\Database->afterSave() #3 /var/www/espocrm/application/Espo/Core/Repositories/Database.php(347): Espo\ORM\Repository\RDBRepository->save() #4 /var/www/espocrm/application/Espo/Services/Record.php(687): Espo\Core\Repositories\Database->save() #5 /var/www/espocrm/application/Espo/Services/Record.php(1145): Espo\Services\Record->storeEntity() #6 /var/www/espocrm/application/Espo/Core/Controllers/Record.php(93): Espo\Services\Record->create() #7 /var/www/espocrm/application/Espo/Core/ControllerManager.php(109): Espo\Core\Controllers\Record->actionCreate() #8 /var/www/espocrm/application/Espo/Core/Api/RouteProcessor.php(84): Espo\Core\ControllerManager->process() #9 /var/www/espocrm/application/Espo/Core/ApplicationRunners/Api.php(184): Espo\Core\Api\RouteProcessor->process() #10 /var/www/espocrm/application/Espo/Core/ApplicationRunners/Api.php(112): Espo\Core\ApplicationRunners\Api->processRequest() #11 /var/www/espocrm/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(43): Espo\Core\ApplicationRunners\Api->Espo\Core\ApplicationRunners\{closure}() #12 /var/www/espocrm/vendor/slim/slim/Slim/Routing/Route.php(381): Slim\Handlers\Strategies\RequestResponse->__invoke() #13 /var/www/espocrm/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): Slim\Routing\Route->handle() #14 /var/www/espocrm/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): Slim\MiddlewareDispatcher->handle() #15 /var/www/espocrm/vendor/slim/slim/Slim/Routing/Route.php(341): Slim\MiddlewareDispatcher->handle() #16 /var/www/espocrm/vendor/slim/slim/Slim/Routing/RouteRunner.php(84): Slim\Routing\Route->run() #17 /var/www/espocrm/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(60): Slim\Routing\RouteRunner->handle() #18 /var/www/espocrm/vendor/slim/slim/Slim/MiddlewareDispatcher.php(140): Slim\Middleware\RoutingMiddleware->process() #19 /var/www/espocrm/vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(107): class@anonymous->handle() #20 /var/www/espocrm/vendor/slim/slim/Slim/MiddlewareDispatcher.php(140): Slim\Middleware\ErrorMiddleware->process() #21 /var/www/espocrm/vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): class@anonymous->handle() #22 /var/www/espocrm/vendor/slim/slim/Slim/App.php(215): Slim\MiddlewareDispatcher->handle() #23 /var/www/espocrm/vendor/slim/slim/Slim/App.php(199): Slim\App->handle() #24 /var/www/espocrm/application/Espo/Core/ApplicationRunners/Api.php(94): Slim\App->run() #25 /var/www/espocrm/application/Espo/Core/Application.php(107): Espo\Core\ApplicationRunners\Api->run() #26 /var/www/espocrm/api/v1/index.php(37): Espo\Core\Application->run() #27 {main} Tips: To display error details in HTTP response set "displayErrorDetails" to true in the ErrorHandler constructor. [] []Tags: None
Leave a comment: