Optional parameters on index route

时间秒杀一切 提交于 2020-01-06 02:53:08

问题


I have a very simple application where I intend to optionally accept a parameter on the index route such that the user can either go to http://example.com/ or http://example.com/somethingrandom I wish to be able to capture the somethingrandom as an optional parameter but I am having no luck. Here is my route:

$app -> get('/(:random)', function($random=null) use($app) {
    ... do some stuff
});

回答1:


According to the Slim documentation, the / needs to be inside the parentheses. So try:

$app -> get('(/:random)', function($random=null) use($app) {
    ... do some stuff
});



回答2:


So getting this working was not a lack of understanding of the slim framework but to do with my default apache2 setup on OS X. By default in later versions of OS X, PHP is not enabled. This was not MY issue but is part of the cause. I followed this tutorial to ensure my setup was correct. In addition to this article I had to uncomment the line that loads up the mod_rewrite module.

I then created a virtual host in /etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
  DocumentRoot "/Users/tbm/Sites/example.com"
  ServerName shor.ty
  <Directory "/Users/tbm/Sites/example.com">
    Options FollowSymLinks
    AllowOverride All
  </Directory>
</VirtualHost>

and added 127.0.0.1 example.com www.example.com into my hosts file so that I was able to access the site with a domain name from my browser.

Last, thanks to enabling the mod_rewrite module, I created a .htaccess file that ensured that all requests go through index.php allowing the slim router to take over and display the correct page

Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ /index.php [QSA,L]

Having done all this I was then able to solve my problem using the following syntax

$app -> get('/(:random)', function($random=null) use($app) {
  ... do some stuff
});

The difference now is that when I visit a page at /some_string apache is told to rewrite the request and run index.php that then invokes slim to find the correct route and render the correct page. I hope this makes sense



来源:https://stackoverflow.com/questions/30576322/optional-parameters-on-index-route

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!