Slim 3中如何在引入的模板文件中使用路由传递的变量
在Slim 3的php-view中让include的头部模板访问路由传递的变量
没问题,这完全可以实现!Slim的php-view组件在渲染模板时,会把你传递的变量注入到模板的当前作用域中,所以你include的头部模板可以直接访问这些变量,不需要额外的复杂操作。
具体实现步骤
- 保持你的路由代码不变:
$app->get('/', function ( $request, $response) { // some code here... $somedata = ' this is just a test'; return $this->renderer->render($response, "/home.phtml",[ 'somedata' => $somedata, ]); });
- 在主模板
home.phtml中include头部文件:
确保include的路径正确,推荐使用__DIR__来定位模板文件,避免路径问题:
<?php // 假设header.phtml和home.phtml在同一个templates目录下 include_once __DIR__ . '/header.phtml'; ?> <!-- 主模板的其他内容 --> <div class="content"> <p>主模板里的变量:<?= $somedata ?></p> </div>
- 在头部模板
header.phtml中直接使用变量:
因为头部模板和主模板共享同一个变量作用域,所以直接用变量名即可:
<header class="site-header"> <h1>头部模板里的变量:<?= $somedata ?></h1> </header>
关键注意事项
- 路径正确性:如果你的头部模板在子目录(比如
templates/partials/header.phtml),记得调整include的路径:include_once __DIR__ . '/partials/header.phtml'; - 避免作用域隔离:不要在模板的函数或类方法内部include头部文件,那样会导致变量无法访问——确保include操作是在模板的全局作用域中执行。
内容的提问来源于stack exchange,提问作者Lioo
相关产品推荐
相关产品推荐

