PHP Note: Undefined index

I am using Zendesk php class , and the following function is used to remove attachments.

/**
 * Delete one or more attachments by token or id
 * $params must include one of these:
 *        'token' - the token given to you after the original upload
 *        'id' - the id of the attachment
 *
 * @param array $params
 *
 * @throws MissingParametersException
 * @throws ResponseException
 * @throws \Exception
 *
 * @return bool
 */
public function delete(array $params) {
    if(!$this->hasAnyKey($params, array('id', 'token'))) {
        throw new MissingParametersException(__METHOD__, array('id', 'token'));
    }
    $endPoint = Http::prepare(($params['token'] ? 'uploads/'.$params['token'] : 'attachments/'.$params['id']).'.json');
    $response = Http::send($this->client, $endPoint, null, 'DELETE');
    if ($this->client->getDebug()->lastResponseCode != 200) {
        throw new ResponseException(__METHOD__);
    }
    $this->client->setSideload(null);
    return true;
}

According to the comments, token or identifier is required when performing this function.

I tried using id

$attachment = $client->attachments()->delete(array('id'=>'1187146218','token'));

However, it retains a throwback exception

  PHP Notice:  Undefined index: token in /home/adam/web/srv11/public_html/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Attachments.php on line 106
PHP Fatal error:  Uncaught exception 'Zendesk\API\ResponseException' with message 'Response to Zendesk\API\Attachments::delete is not valid. Call $client->getDebug() for details' in /home/adam/web/srv11/public_html/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Attachments.php:109
Stack trace:
#0 /home/adam/web/srv11/public_html/functions/support-attachment-delete.php(15): Zendesk\API\Attachments->delete(Array)
#1 {main}
  thrown in /home/adam/web/srv11/public_html/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Attachments.php on line 109

Your help is much appreciated.

+4
source share
1 answer

the way you write

array('id'=>'1187146218','token')

really gives an array like this:

array('id'=>'1187146218', 0 => 'token')

therefore there is no token index. This should work if you just change to

$attachment = $client->attachments()->delete(array('id'=>'1187146218','token' => NULL));
+2
source

All Articles