2015-06-01 51 views
1

我有一個非常簡單的應用程序,我打算選擇接受索引路徑上的參數,以便用戶可以選擇http://example.com/http://example.com/somethingrandom我希望能夠捕獲somethingrandom作爲可選參數但我沒有運氣。下面是我的路線:索引路由上的可選參數

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

回答

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允許苗條路由器接管並顯示正確的頁面

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阿帕奇被告知要重寫將R請求並運行index.php,然後調用slim來查找正確的路由並呈現正確的頁面。我希望這是有道理的

0

按照Slim documentation/必須括號。因此,嘗試:

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

這是行不通的。有了這個,當我訪問我的索引路線時,我得到了一個404。我得到一個404 – tomasbasham

+0

如果你有類似'/ subdir(/:random)'的東西,它能工作嗎?這可能只是Slim的限制: -/ – alexw

+0

好的。最終發現它。 'get('/(:random)',...'是一種享受,然而這只是戰鬥的一半。原來我在OS X上配置了一些默認安裝apache2的東西。我會寫將解決方案作爲新的答案 – tomasbasham