Я хочу использовать маршрут для получения полной коллекции и, если возможно, отфильтрованной коллекции.
, поэтому мой маршрут:
$app->get("/companies", \App\Handler\CompanyPageHandler::class, 'companies');
Мой обработчик для этого маршрута:
use App\Entity\Company;
use App\Entity\ExposeableCollection;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class CompanyPageHandler extends AbstractHandler
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$categories = new ExposeableCollection();
foreach (['test', 'test1', 'test3'] as $name) {
$category = new Company();
$category->setName($name);
$categories->addToCollection($category);
}
return $this->publish($categories);
}
}
Получая этот маршрут /companies
, я получаю ожидаемую коллекцию
[{"name":"test"},{"name":"test1"},{"name":"test3"}]
Так что теперь я меняю маршрут
$app->get("/companies[/:search]", \App\Handler\CompanyPageHandler::class, 'companies');
Все хорошо, когда япросмотр до /companies
.Но если я попробую необязательный параметр /companies/test1
, то получу ошибку
Невозможно получить http://localhost:8080/companies/test1
Мой раздел требует композитора:
"require": {
"php": "^7.1",
"zendframework/zend-component-installer": "^2.1.1",
"zendframework/zend-config-aggregator": "^1.0",
"zendframework/zend-diactoros": "^1.7.1 || ^2.0",
"zendframework/zend-expressive": "^3.0.1",
"zendframework/zend-expressive-helpers": "^5.0",
"zendframework/zend-stdlib": "^3.1",
"zendframework/zend-servicemanager": "^3.3",
"zendframework/zend-expressive-fastroute": "^3.0"
},
В Zend Framework 2 и Symfony4 это определение маршрута работает нормально.Так что я в замешательстве.Почему мой необязательный параметр не работает?