Есть пустой проект без фреймворка, но со скачанным symfony/router
. Вот сам роутинг:
<?php
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
$routes = new RouteCollection();
$routes->add('contacts_all', new Route('/api/v1/contacts', ['_controller' => 'Controllers\ContactController::index']));
$routes->add('contact_show', new Route('/api/v1/contacts/{contact}', ['_controller' => 'Controllers\ContactController::show']));
$routes->add('contact_delete', new Route('/api/v1/contacts/{contact}', ['_controller' => 'Controllers\ContactController::delete'], [], [], '', ['DELETE']));
$routes->add('api_v1', new Route('/api/{any}', ['_controller' => 'Controllers\AppController::errorApi'], ['any' => '.*']));
$routes->add('index', new Route('/', ['_controller' => 'Controllers\AppController::index']));
$routes->add('any', new Route('/{any}', ['_controller' => 'Controllers\AppController::index'], ['any' => '.*']));
return $routes;
Не работает метод DELETE, в чем может быть ошибка?
PS: вообще есть решение у меня, но оно мне не нравится:
<?php
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
$routes = new RouteCollection();
switch($_SERVER['REQUEST_METHOD'])
{
case 'GET':
$routes->add('contacts_all', new Route('/api/v1/contacts', ['_controller' => 'Controllers\ContactController::index']));
$routes->add('contact_show', new Route('/api/v1/contacts/{contact}', ['_controller' => 'Controllers\ContactController::show']));
$routes->add('api_v1', new Route('/api/{any}', ['_controller' => 'Controllers\AppController::errorApi'], ['any' => '.*']));
$routes->add('index', new Route('/', ['_controller' => 'Controllers\AppController::index']));
$routes->add('any', new Route('/{any}', ['_controller' => 'Controllers\AppController::index'], ['any' => '.*']));
break;
case 'DELETE':
$routes->add('contact_delete', new Route('/api/v1/contacts/{contact}', ['_controller' => 'Controllers\ContactController::delete']));
break;
}
return $routes;
Поскольку в предыдущих роутах явно не указан метод, то принимается любой. И роут contact_show
срабатывает и на GET и на DELETE, поскольку паттерн одинаковый. Поднимите роут contact_delete
выше чем contact_show
или явно пропишите в contact_show
метод GET
У вас пропущен один параметр. Перед ['DELETE']
вставьте еще один пустой массив
Defining Routes
A full route definition can contain up to eight parts:
$route = new Route(
'/archive/{month}', // path
['_controller' => 'showArchive'], // default values
['month' => '[0-9]{4}-[0-9]{2}', 'subdomain' => 'www|m'], // requirements
[], // options
'{subdomain}.example.com', // host
[], // schemes
[], // methods
'context.getHost() matches "/(secure|admin).example.com/"' // condition
);
$routes->add('contact_delete', new Route(
'/api/v1/contacts/{contact}', //path
['_controller' => 'Controllers\ContactController::delete'], //default values
[], // requirements
[], // options
'', // host
['DELETE'] // !!! sсhemes
));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Читаю статью https://laravelcom/docs/5
Необходима регулярка на php которая заменяет пустое место после точки на пробелТо бишь "Дерево
Я использую Ajax в wordpress для передачи списка запчастей, а полученные данные хочу передать в форму contactForms7
Задача такая меня постигла, имеем в базе ячейку money тип ячейки bigint туда пишется баланс сатоши, так как различного рода зачисления удобней...