2014-10-22 2 views
1

Простые сомнения относительно маршрутизации Silex. Я очень новой для Silex, и в основном я учу его, насколько все идет так хорошо, а вот вопрос (??) -Silex Routing issue

Это мой index.php ->

require_once __DIR__.'/../vendor/autoload.php'; 
$app = new Silex\Application(); 

$app->register(new Silex\Provider\UrlGeneratorServiceProvider()); 
use Symfony\Component\HttpFoundation\Response; 

$app->get('/', function() { 
    return 'Hello World!'; 
}); 

$app->get('/hello', function() { 
    return 'Hello From HELLO!'; 
}); 

$app->error(function (\Exception $e, $code) use($app) { 
    switch ($code) { 
     case 404: 
      $message = "Oooops Not Found"; 
      break; 
     default: 
      $message = $app['twig']->render('error500.html.twig'); 
    } 
    return new Response($message, $code); 
}); 

$app->run(); 

вопрос касается маршрутизации, он работает до тех пор, пока мы пытаемся добраться до дома, или/hello (http://mysite.dev или http://mysite.dev/hello). но если я попытаюсь получить доступ к ссылке, которая не существует, например: http://mysite.dev/hello/blah, она вернет 404 страницу ($ app-> error()), как ожидалось, но если я удалю/blah part и попытаюсь снова войти в браузере (http://mysite.dev/hello) - все-таки я получаю 404, чтобы получить доступ к сайту, мне нужно вернуться к корню (т.е. http://mysite.dev). Я не знаю, не хватает ли я какой-либо конфигурации или что-то еще или может быть глупым, но, пожалуйста, я стартер в кодировании.

ЗДЕСЬ ВЕЛИКИЙ Пример: - перейти к https://getcomposer.org/doc/00-intro.md это приведет вас к композитору документации по началу работы страницы, а если добавить некоторые вещи, в конце этого URL, как этот https://getcomposer.org/doc/00-intro.md/blah - это даст вам «Извините, страница вы не можете найти. error, ok, и если вы хотите вернуться к странице начала работы, если вы попытаетесь удалить/удалить и ввести снова, то вы все равно не получите ту же страницу ошибок, может кто-нибудь объяснить об этом.

же здесь http://silex.sensiolabs.org/doc/

Спасибо заранее.

ответ

1

Маршрут не ожидает задней косой черты. Thsi ожидаемое поведение, и было обсуждено подробно: https://github.com/silexphp/Silex/issues/149

Предполагается, что вы определяете резервный канал, с косой чертой неявной:

$app->get('/hello', function() { 
    return 'Hello From HELLO!'; 
}); 

$app->get('/hello/', function() { 
    return 'Hello From HELLO!'; 
}); 

Поскольку второй параметр является функцией обратного вызова, это может быть :

$hello_handler = function() { 
    return 'Hello From HELLO!'; 
}; 
//or 
$hello_handler = array($object, 'handler_method'); 

$app->get('/hello', $hello_handler); 
$app->get('/hello/', $hello_handler); 

Или любой простой в использовании метод, который вы придумали.

Причина этого заключается в том, что /index.html - это не то же самое, что и у /index.html/.

+0

Спасибо за ваш быстрый ответ @ Майкл. –

+0

Не проблема моего друга. – Mike