Как сервер (Apache) знает, что мой каталог feature
и не 1
или [email protected]
?
Silex имеет Routing System. Вы передаете маршрут методу запроса (get
здесь), и таким образом запрос захватывается.
Попадая все функции:
// htdocs/project/public/modules/features/index.php
$app->get('/modules/features', function (Application $app, Request $request) {
$features = $app['em']->getRepository(Feature::class)->findAll();
return $app['twig']->render('features/index.html.twig', array(
'items' => $features,
));
});
Получение номера функции # 1:
// htdocs/project/public/modules/features/index.php
$app->get('/modules/features/{id}', function (Application $app, Request $request) {
$id = $request->get('id');
$feature = $app['em']->getRepository(Feature::class)->find($id);
return $app['twig']->render('features/show.html.twig', array(
'items' => $feature,
));
});
Так что ВЫ, не Apache, которые решили, что возвращаться на какой запрос ,
Нужно ли мне что-то делать дальше, или сервер Apache делает магию для меня из коробки?
Нужно ли мне настраивать любые маршруты на Silex?
Да! Вы должны и могли определять ваши маршруты. Обратите внимание на '/modules/features'
& '/modules/features/{id}'
части в фрагментах выше.
URL Путь против FileSystem Каталоги
URLs имеют иерархическую систему категоризации под названием Path и File System имеет подобную вещь тоже, несмотря на то, что они совершенно разные вещи.
Они не должны быть одинаковыми все время, хотя они могут быть как правило простоты.
Таким образом, вы можете сопоставить этот URL:
http://example.com/modules/features
в обоих этих местах файловой системы:
htdocs/project/public/modules/features/index.php
&
htdocs/project/public/Controller/Frontend/modules/features/index.php
Final Примечание
Y ou лучше воспользоваться преимуществами Directory Directory Best Practices. примерами являются:
& PHP Namespaces