我想在我的模板中使用路径名称(主页)显示链接。 如何使用Slim Framework 感谢
我的路线
<?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()
答案 0 :(得分:3)
可以通过Singleton及其getInstance
方法
<a href="<?php echo Slim\Slim::getInstance()->urlFor('home'); ?>">my home link</a>
如果您有多个Slim实例
,也可以指定名称<a href="<?php echo Slim\Slim::getInstance('blog')->urlFor('home'); ?>">my home link</a>
如果您想使用$this
<a href="<?php echo $this->urlFor("home");">my home link</a>
然后,您应该通过添加包含Slim\View
方法的urlFor
子类来创建自定义视图,并将其链接到Slim
自定义类:
<?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()
));
答案 1 :(得分: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>
答案 2 :(得分:0)
OR:
echo '<a href="' . Slim\Slim::getInstance()->urlFor('home') . '">home</a>';