2014-02-12 48 views
1

我想要使用路線名稱(首頁)顯示一個鏈接到我的模板中。 我該怎麼做搭配修身框架 感謝In template如何打印路線名稱中的鏈接

我的路線

<?php 
// index : home 
$app->get('/home', function() use ($app){ 
    $app->render('home.php'); 
})->name('home'); 

我的模板

<div> 
    <a href="<?php echo $this->tr("home"); // This doesn't work ?>">my home link</a> 
</div> 

urlFor()

<div> 
    <a href="<?php echo $this->urlFor("home"); // This doesn't work ?>">my home link</a> 
</div> 

我得到這個消息

=> Call to undefined method Slim\View::urlFor() 

回答

1

我找到了解決辦法

只需添加這

$app->hook('slim.before.router', function() use ($app) { 
    // Pass in the App so we can use urlFor() to generate routes 
    $app->view()->setData('app', $app); 
}); 

的然後到您的模板,你可以使用這個(與應用沒有):

<div> 
    <a href="<?php echo $app->urlFor("home"); ?>">my home link</a> 
</div> 
0

OR:

echo '<a href="' . Slim\Slim::getInstance()->urlFor('home') . '">home</a>'; 
+3

請爲您的答案添加解釋。 – T0xicCode

3

苗條的實例是通過一個Singleton及其getInstance方法訪問

<a href="<?php echo Slim\Slim::getInstance()->urlFor('home'); ?>">my home link</a> 

您還可以,如果你擁有纖細的

<a href="<?php echo Slim\Slim::getInstance('blog')->urlFor('home'); ?>">my home link</a> 
的多個實例指定一個名稱

如果您想訪問urlFor方法使用$this

<a href="<?php echo $this->urlFor("home");">my home link</a> 

那麼你應該通過添加含有urlFor方法Slim\View子類創建自定義視圖,並將其鏈接到修身

自定義類:

<?php 
class CustomView extends \Slim\View 
{ 
    public function urlFor($name, $params = array(), $appName = 'default') 
    { 
     return Slim::getInstance($appName)->urlFor($name, $params); 
    } 
} 

鏈接:

<?php 
require 'CustomView.php'; 

$app = new \Slim\Slim(array(
    'view' => new CustomView() 
));