2011-11-24 38 views
1

我已經在php-silex中有了一個項目,但我正在使用這個框架。 我創建了一些路線,但有些不起作用。 這裏是一些爲例:如何使用虛線和下劃線在silex中創建路線

/* 
**INIT HERE & SOME OTHER CODE 
*/ 
$app->match('letter-{letter}', function($letter) use() 
{ 
    echo 'With dash'; 
}); 

$app->match('letter_{letter}', function($letter) use() 
{ 
    echo 'With underscore'; 
}); 

$app->match('{other}', function($other) use() 
{ 
    echo 'Other view'; 
}); 

如果我輸入/信一輸出是「寬劃線」,但如果我輸入「/ letter_a」輸出「其它視圖」而不是「寬下劃線」。

我想知道爲什麼發生這種情況,以及如何顯示'寬度下劃線'?

回答

3

問題是路由:letter-{letter}letter_{letter}解析爲相同的路由名稱,因此第二個覆蓋第一個。解決方案是明確給路由一個唯一的名稱。

你可以通過使用bind

$app->match('letter-{letter}', function ($letter) { 
    echo 'With dash'; 
}) 
->bind('letter_dash'); 

$app->match('letter_{letter}', function ($letter) { 
    echo 'With underscore'; 
}) 
->bind('letter_underscore'); 

我會在硅石跟蹤開出罰單,看是否存在時,兩條路線具有相同的名稱,我們可以給出一個錯誤。 (編輯:done

0

我不相信他們允許這種類型的語法,他們正在你的斜槓'/'之間進行whild卡查找並獲取整個值,顯然他們不允許真正的模式匹配。

+0

非常整潔的框架,你剛纔介紹我:) – krob