致命错误:在第8行

时间:2016-02-09 10:49:20

标签: php foreach kirby

我是PHP新手,目前收到错误

  

致命错误:在第8行的非对象上调用成员函数url()

以下是我正在尝试的代码

<?php
   $subpages = $site->pages()->children()->visible();
   $image_url = $subpages->image()->url();
   $title = $subpage->title()->text();

   foreach($subpages as $subpage) {
      echo '<div class="col-md-4">';
      echo '<h2>' . $title . '</h2>';
      echo '<a href="' . $subpage->url() . '" title="' . $title . '">';
      echo '<img src="' . $image_url . '" alt="' . $title . '" class="img-responsive img-thumbnail">';
      echo '</a>';
      echo '</div>';
   }
?>

2 个答案:

答案 0 :(得分:0)

您应该检查$ subpages中的值和方法是什么?我认为将值赋给变量时会出现问题。

答案 1 :(得分:0)

此处更正了您的代码:

<?php
   $subpages = $site->children()->visible();
   foreach($subpages as $subpage) {
   $image_url = $subpage->image()->url();
   $title = $subpage->title()->html();
      echo '<div class="col-md-4">';
      echo '<h2>' . $title . '</h2>';
      echo '<a href="' . $subpage->url() . '" title="' . $title . '">';
      echo '<img src="' . $image_url . '" alt="' . $title . '" class="img-responsive img-thumbnail">';
      echo '</a>';
      echo '</div>';
   }
?>

您的代码有什么问题:

  • 您应该使用$site->children()列出该网站的所有子级 See kirby docs
  • 您在foreach之前定义了$image_url$title,这是不正确的。我刚刚在foreach的开头移动它们 环。还修正了image_url以使用子页面而不是子页面。
  • 您在标题上使用text()。这不存在,请使用kirbytext()html(),具体取决于您要执行的操作。见 文档。