2017-01-29 10 views
1

У меня есть эта иерархия каталогов:Mapping путь к структуре каталогов в файловой системе в Silex

htdocs 
    |-- project 
    |-- public 
     |-- module 
     |-- feature 
      |-- index.php 

На образце GET запрос как

http://example.com/module/feature/1/[email protected] 

как сервер (Apache) знает, что мой является feature, а не 1 или [email protected]?

Нужно ли мне что-то делать дальше, или сервер Apache делает волшебство для меня из коробки?

Нужно ли мне настраивать любые маршруты на Silex?

ответ

0

Как сервер (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

 Смежные вопросы

  • Нет связанных вопросов^_^