@didrux

Как передать url в качестве параметра в php slim?

Есть код, который обрабатывает запросы по slim паттерну.

Версия SLIM 4.9.0
PHP 8.1.2

<?php

declare(strict_types=1);

use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use ResidenzAnDerBode\Application\Contact\Validation\CreateContactRequestValidationMiddleware;
use ResidenzAnDerBode\Http\Action\Contact\CreateContact;
use Slim\App;

/**
 * @param App $app
 * @param ContainerInterface $container
 */

return function (App $app, ContainerInterface $container) {
    $app->post('/api/contact', CreateContact::class)
        ->add(CreateContactRequestValidationMiddleware::class);

    $app->get('/api/holidayrentals/{icalUrl}', function (ServerRequestInterface $request, ResponseInterface $response, $args) {
        $response->getBody()->write($args['icalUrl']);
        return $response;
    });
};


Когда в браузерную строку я ввожу http://my-website/api/holidayrentals/helloworld то получаю на экране helloworld

Однако когда вместо helloworld я хочу передать url, например https://qna.habr.com/question/new то есть введя в браузер
http://my-website/api/holidayrentals/https://qna.habr.com/question/new
то получаю ошибку.

Мне нужно, по аналогии с helloworld получать на экране https://qna.habr.com/question/new

Как это исправить?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@didrux Автор вопроса
$app->get('/api/holidayrentals/{icalUrl:[\s\S]+}'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы