2015-12-26 21 views
0

我與修身框架還挺新的,現在我有這個問題,一個名爲路由...我的第一路由代碼是這樣調用修身命名的路由拋出異常

$app->get('/admin/home', function() use ($app){ 

    if(!isset($_SESSION)){ 
     $app->render('admin/login.php', [ 
      'message' => 'Restricted access!' 
     ]); 
    }else{ 
     session_start(); 
     $app->render('admin/home.php', [ 
      'username' => $_SESSION['username'] 
     ]); 
    } 

})->name('/admin/home'); 

但後來,當我從另外一個類似這樣的

$app->post('/admin/login', function() use ($app, $conn) { 
    $app->urlFor('/admin/home'); 
})->name('/admin/login'); 

它拋出一個異常,稱這條路線「命名的路線已經與名稱存在:/管理/登錄」

我只是不明白它...它甚至有可能撥打一個電話從另一個?正如我在Slim文檔中看到的那樣,它應該是......我錯在哪裏?謝謝

回答

0

避免用斜槓命名您的路線。

相反試試這個:

$app->get('/admin/home', function() use ($app){ 

    // details here 

})->name('admin_home'); 

呼叫,像這樣:

$app->post('/admin/login', function() use ($app, $conn) { 
    echo $app->urlFor('admin_home'); // test it 
})->name('admin_login'); 

此外,在這兩個例子,目前小的優勢,那些你給的名字。你的意思是:'讓我獲得/admin/home的路線,它返回/admin/home。如果它們相同,爲什麼不使用字符串。相反,命名的路由是一種方便的方法,當你在做某些事情時,比如返回url並不完全清楚。

簡單的例子:

name('user_login')可以映射到users/login

name('admin_login')可能映射到更加明確admin/login

路線:

name('all_customers') - >/customers

name('top_n_customers) - >/customers/top/{count:[0-9]+}

name('recent_n_customers) - >/customers/recent/{count:[0-9]+}

票友

`name('filtered_customers)` -> `/customers/{field:[a-z]+}/{value}` 

// example: 
/customers/country/spain  // customers in Spain 
/customers/created/2016-01-01 // New customers this year 

很顯然,在過去的例子中,你不得不檢查有效的領域,並返回,如果你作出適當的反應不支持它。

注意:語法適用於Slim Framework 3.0。相應地調整版本2.0。

+0

@Rob你是在談論另一篇文章?這個問題是關於Slim,而不是jQuery。 – Armstrongest

相關問題