【问题标题】:DataObjects as Pages (SSBits Tutorial) - Sivlerstripe 3DataObjects as Pages (SSBits Tutorial) - Sivlerstripe 3
【发布时间】:2013-11-02 20:35:08
【问题描述】:

我尝试将来自 ssbits 的本教程 http://www.ssbits.com/tutorials/2010/dataobjects-as-pages-part-2-using-model-admin-and-url-segments-to-create-a-product-catalogue/ 用于我的新闻部分。

我认为我做的一切都是正确的。但我无法保存 NewsObject。出现这个错误

/mysite/code/DataObjects/NewsObject.php 第 155 行的通知

第 155 行是这样的

$this->URLSegment = SiteTree::generateURLSegment($this->Title);

但是这里有什么问题呢?

这是我的全部代码。也许有人可以帮我解决这个问题。

NewsObject:http://www.sspaste.com/paste/show/5278c59fd7904

新闻分类:http://www.sspaste.com/paste/show/5268d844c9ee2

【问题讨论】:

  • 这看起来很模糊,研究不足.... 错误中是否存在“通知....”。该教程也适用于 SS 2.4。* 它需要对 SS 3 进行一些更新...
  • 不,这是唯一的错误(开发模式已打开)。我一步一步完成了教程,并将静态...更新为私有静态、函数到公共函数等。我认为其余的对于 ss3 应该没问题?

标签: php silverstripe


【解决方案1】:

DataObjects-as-Pages 模块就是这样做的:

$this->URLSegment = $this->generateURLSegment($this->Title);

这使用了同一个类中的自定义函数:

public function generateURLSegment($title)
{
    $filter = URLSegmentFilter::create();
    $t = $filter->filter($title);

    // Fallback to generic page name if path is empty (= no valid, convertable characters)
    if(!$t || $t == '-' || $t == '-1') $t = "page-$this->ID";

    // Hook for extensions
    $this->extend('updateURLSegment', $t, $title);

    return $t;
}

【讨论】:

  • sry 但我绝对不明白。我很困惑我需要哪些代码,哪些不需要。
  • generateURLSegment 函数添加到您的 NewsObject 类。然后将您的行 $this->URLSegment = SiteTree::generateURLSegment($this->Title); 替换为 $this->URLSegment = $this->generateURLSegment($this->Title);
  • 这是我首先尝试的,但在保存数据对象后会导致Error at line 847 of /framework/control/injector/Injector.php。更新 url 按钮也不起作用。点击它后,标准的“新产品”仍在该字段中
  • 我没有时间为你调查这个。当我这样做时,我会告诉你的。
  • 不看代码不知道哪里出了问题,所以无法给出任何提示。我能做的最好的就是向您指出一些可以做到这一点的代码:github.com/arambalakjian/DataObjects-as-Pages/blob/master/code/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多