索引路由上的可选参数

时间:2015-06-01 14:36:14

标签: php slim

我有一个非常简单的应用程序,我打算在索引路由上选择接受一个参数,以便用户可以转到http://example.com/http://example.com/somethingrandom我希望能够捕获{{ 1}}作为可选参数,但我没有运气。这是我的路线:

somethingrandom

2 个答案:

答案 0 :(得分:0)

根据Slim documentation/需要在里面括号。所以试试:

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

答案 1 :(得分:0)

所以让这个工作起来不是缺乏对苗条框架的理解,而是在OS X上对我的默认apache2设置有所了解。默认情况下,在OS X的更高版本中,PHP未启用。这不是 MY 问题,但却是原因的一部分。我按照this教程确保我的设置正确无误。除了本文之外,我还必须取消注释加载mod_rewrite模块的行。

然后我在/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>

并将127.0.0.1 example.com www.example.com添加到我的hosts文件中,以便我能够使用浏览器中的域名访问该网站。

最后,由于启用了mod_rewrite模块,我创建了一个.htaccess文件,确保所有请求都通过index.php,允许超薄路由器接管并显示正确的页面< / p>

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

完成所有这些后,我就可以使用以下语法解决我的问题

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

现在的区别在于,当我在/some_string访问页面时,会告诉apache重写请求并运行index.php,然后调用slim来查找正确的路由并呈现正确的页面。我希望这是有道理的