【问题标题】:How can I use php variables with Slim Framework?如何在 Slim 框架中使用 php 变量?
【发布时间】:2019-04-09 08:16:03
【问题描述】:

我正在尝试使用基于用户选择的 id 的信息填充页面。我曾尝试使用 slim 框架定义我的变量,但我对如何使用它们或调用它们感到困惑。我的变量存储在listings.php 页面上,我试图在listings.html 页面上调用。

我在下面包含了相关代码。在不同的页面上,用户可以选择要共享的数据库条目:

<div class="list-option">
<a href="/listings/share/{{listing.id}}" class="option-button settings">Share Listing</a>
</div>

如果我选择特定项目(例如项目 34),则 URL 显示为:

.../listings/share/34

但现在我想用列表表第 34 项中的所有相关信息填充该 share.html 页面。我的 listings.php 页面看起来像这样从数据库中提取数据:

$app->get('/listings/share/{lisitingid}', function ($request, $response, $args) {

    $variables['title'] = 'Share Listing';
    $variables['listing'] = $this->db->select('listing', ['id', 'name', 'details', 'associated_user', 'address', 'location', 'category']);

    return $this->view->render ($response, 'share.html', $variables);
});

我的 share.html 页面如下所示:

<div class='wrapper'>
    <div class='listing-image'>
    <img src='###'>
    </div>
    <div class='listing-info'>
    <div class='listing-title'>
        <div class='lister-logo'><img src='image/###' alt='Lister Logo'></div>
        <div class='listing-category'>.$row['category']."'</div>
        <h2 class='listing-name'></h2></div>
    <div class='profile-pic'><img src='image/###' alt='profile picture'></div>
    <div class='lister-bio'>
        <h2 class='about'>.$row['name']</h2></div>

        <p class='biography'>".$row['details']"</p>
    </div>
    <div class='lister-contact'>
        <div class='address'>".$row['address']</div>

我知道这是错误的,我正在尝试使用我知道的以前的方法从数据库中调用信息,但我使用的是 Slim 框架,它对我来说是全新的。谁能根据我的尝试演示或向我展示如何从数据库中获取信息以显示在 share.html 页面上?

【问题讨论】:

  • 通过将$variable 传递给render() 方法,您可以在模板文件中使用$title$listing$variable 键),但您使用的是@987654330 @ 未在该范围内定义。

标签: php slim slim-3


【解决方案1】:

我建议将share.html 重命名为share.php。 正如@Nima 在评论中所说,如果你有

$variables['title'] = 'Share Listing';
$variables['listing'] = $this->db->select(
    'listing', 
    [
        'id', 
        'name', 
        'details', 
        'associated_user', 
        'address',  
        'location', 
        'category'
    ]
);

return $this->view->render ($response, 'share.html', $variables);

然后您可以使用名称$title$listingshare.php 中访问它。

您需要从

更改share.php的内容
<div class='listing-category'>.$row['category']."'</div>

类似于(假设$listing 是数据库记录数组)

<?php foreach($listing as $row) : ?>
    <div class='listing-category'><?php echo $row['category']; ?></div>
<?php endforeach; ?>

或使用&lt;?= $var ?&gt;(这是&lt;?php echo $var; ?&gt;的短版)

<?php foreach($listing as $row) : ?>
    <div class='listing-category'><?= $row['category']; ?></div>
<?php endforeach; ?>

要在share.php中打印$variables['title']的内容,你可以这样做

<div><?= $title ?></div>

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多