【问题标题】:Optional parameters on index route索引路由上的可选参数
【发布时间】:2015-06-11 05:32:52
【问题描述】:

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

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

【问题讨论】:

    标签: php slim


    【解决方案1】:

    根据Slim documentation/ 需要括号内。所以试试:

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

    【讨论】:

    • 这不起作用。有了这个,当我访问我的索引路由时,我得到一个 404。我得到一个 404
    • 如果你有类似/subdir(/:random) 的东西,它会起作用吗?这可能只是 Slim 的限制:-/
    • 好的。最后想通了。 get('/(:random)', ... 是一种享受。然而,这只是成功的一半。原来我在 OS X 上使用默认安装的 apache2 配置了一些东西。我将把解决方案写成新的答案
    【解决方案2】:

    所以让这个工作不是缺乏对苗条框架的理解,而是与我在 OS X 上的默认 apache2 设置有关。在更高版本的 OS X 中,默认情况下不启用 PHP。这不是我的问题,而是部分原因。我按照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 添加到我的主机文件中,以便我能够通过浏览器使用域名访问该站点。

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

    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 以找到正确的路由并呈现正确的页面。我希望这是有道理的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      相关资源
      最近更新 更多