标签: silverstripe

SilverStripe:如何在另一个选项卡之前插入选项卡?

我试图在Root.Content.Main之前插入一个新的管理选项卡,没有任何运气.我试过了:

$fields->insertBefore(new Tab('Root.Content.Overview', 'Overview'), 'Root.Content.Main');
Run Code Online (Sandbox Code Playgroud)

$fields->addFieldToTab('Root.Content', new Tab('OverviewTab', 'Root.Content.Overview'), 'Root.Content.Main');
Run Code Online (Sandbox Code Playgroud)

没有运气.

有人有主意吗?我已经通过API进行了搜索,但对于标签命名系统的工作方式没有太多解释.

php silverstripe

5
推荐指数
1
解决办法
3974
查看次数

如何将自定义数据传递给模板

我是OOP框架的新手,特别是Silverstripe.我确定我错过了一些至关重要的东西!

我目前正在尝试为我的主页创建一个Twitter提要.在我的Page_controller中我有:

public function getTwitterFeed() { ... }
Run Code Online (Sandbox Code Playgroud)

...获取一组推文.我可以按照我喜欢的方式格式化这些数据,因此数据的结构和功能应该是无关紧要的.

在Silverstripe教程中,他们给出了以下示例:

public function LatestNews($num=5) {
    $holder = NewsHolder::get()->First();
    return ($holder) ? News::get()->filter('ParentID', $holder->ID)->sort('Created', 'DESC')->limit($num) : false;
}
Run Code Online (Sandbox Code Playgroud)

然后在模板中调用它,如下所示:

<% loop LatestNews %>
    <% include NewsTeaser %>
<% end_loop %>
Run Code Online (Sandbox Code Playgroud)

但是,此函数基于DataModel对象(NewsHolder),并从数据库中获取数据(我的twitter函数不是).

那么这个函数应该返回什么类型的变量?数组?一个东西?

php silverstripe

5
推荐指数
1
解决办法
6441
查看次数

Silverstripe图像有很多

我对Silverstripe很新,并一直在玩CMS.

目前我被卡住了......我正在尝试$has_many在DataObject和Images之间添加关系.

我发现做这样的事情的文件很模糊?我知道当你想在两个DataObjects之间添加一个关系时,你需要添加一个$many_many$belongs_many_many关系但是我如何用图像做这个?

我尝试将图像添加到a $has_many并简单地使用上传字段,但这只会导致错误.我还尝试保留图像$has_one并将上传字段setAllowedMaxFileNumber增加到10,但这只能保存1张图像.

在这方面的任何帮助将非常感谢:)

谢谢!

任何人都希望看到这里的代码是一个Pastebin

php oop image silverstripe relationship

5
推荐指数
1
解决办法
679
查看次数

在SilverStripe中取消设置会话

我正在SilverStripe建立一个非常简单的在线商店.我正在写一个功能,从购物车中删除一个项目(order在我的情况下).

我的设置:

我的端点将JSON返回到视图以便在ajax中使用.

public function remove() {

    // Get existing order from SESSION
    $sessionOrder = Session::get('order');

    // Get the product id from POST
    $productId = $_POST['product'];

    // Remove the product from order object
    unset($sessionOrder[$productId]);

    // Set the order session value to the updated order
    Session::set('order', $sessionOrder);

    // Save the session (don't think this is needed, but thought I would try)
    Session::save();

    // Return object to view
    return json_encode(Session::get('order'));
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

当我将数据发布到此路由时,产品将被删除但只是暂时删除,然后下次调用remove时,前一项将返回.

例:

订单对象:

{
  product-1: {
    name: 'Product …
Run Code Online (Sandbox Code Playgroud)

session silverstripe

5
推荐指数
1
解决办法
225
查看次数

Silverstripe - 设置现有站点的本地副本

我是silverstripe和webhosting的新手,我想我不明白工作流程是什么.情况如下:有这个网站http://foo.com使用silverstripe.它已经安装并添加了一些内容.但是,我现在负责将设计从标准simple主题更改为自定义主题.

由于这需要进行一些测试和游戏,我当然不希望在线进行所有更改.我有ftp访问该网站,可以更改那里的所有文件(耶!).但我认为拥有本地网站副本,对我的离线版本进行所有更改,然后将最终新版本上传到webhoster(通过ftp)是最有用的.

所以我的问题如下:我如何获得具有所有silverstripe模块/主题等的网站的本地工作副本到我的Ubuntu计算机,并且可以像在线一样编辑它?

我认为必须有一个教程,但我找不到适合我的东西.

如果这不是建议的工作流程(现在下载网站,请在我的计算机上通过工作的silverstripe安装离线进行更改,再次上传所有内容)然后请告诉我它是如何正确完成的.

ftp ubuntu web-hosting silverstripe

5
推荐指数
1
解决办法
283
查看次数

最后如何应用SilverStripe扩展?

我有一个特定的模块可以做一些事情来整理 CMS。我们就这样称呼它吧silverstripe-cleanup

该模块所做的一件事是将MetaData字段移动到它们自己的选项卡,我希望该选项卡始终是 CMS 中的最后一个选项卡。

因此,如果我的/httpdocs/silverstripe-cleanup/config/config.yml外观如下所示,如何确保此扩展在所有其他扩展之后应用?

---
Name: silverstripe-cleanup
---

SiteTree:
  extensions:
    - MetaDataMovementExtension
Run Code Online (Sandbox Code Playgroud)

yaml silverstripe

5
推荐指数
1
解决办法
763
查看次数

使用map设置两个字段

在SilverStripe中,当我map在a中使用时,我想返回两个字段DropdownField.

我有一个Teacher带字段firstname和数据的数据对象lastname.所以在我DropdownField想要合并这两个字段并将它们传递给我map().

我当前的代码如下所示:

 public function getCMSfields() {
        $fields = FieldList::create(TabSet::create('Root'));

        $fields->addFieldsToTab('Root.Main', array(
             DropdownField::create('TeacherID', 'Teacher')->setSource(Teacher::get()->map('ID', 'Firstname'))->setEmptyString('Select one')
        );

        // etc...
        return $fields;
    }
Run Code Online (Sandbox Code Playgroud)

如何合并firstname并将lastname其传递到内部map()并将其返回给DropdownField.

silverstripe

5
推荐指数
1
解决办法
488
查看次数

调试 SilverStripe 准备好的语句

使用 3.2 中引入的 ORM 更改调试 DB 查询变得更加困难。运行$dataList->sql()为您提供准备好的语句(形式为SELECT * FROM Table WHERE Title = ?),这是一个好的开始。?showqueriesURL 变量的作用相同。

如何获取语句的值或参数是我感兴趣的。我知道https://github.com/lekoala/silverstripe-debugbar我想知道是否有办法在 XDebug 控制台中无需任何扩展即可获取它们(或仅通过var_dump:ing 某些东西)。

我快速浏览了silverstripe-debugbar的代码,但没有找到一个易于使用的解决方案。如果它在某个地方,请指点我:)

php mysql debugging prepared-statement silverstripe

5
推荐指数
0
解决办法
168
查看次数

Silverstripe:按作者筛选博客文章

我现在谷歌搜索大约2个小时,无法找到这个问题的答案.我正在尝试按作者/会员ID过滤博客帖子(使用silverstripe-blog模块).到目前为止我有:

public function MyRecentPosts() {

        $posts = BlogPost::get()
            ->sort('PublishDate','desc')
            ->limit(2);

        return $posts;
    }
Run Code Online (Sandbox Code Playgroud)

显然,只返回最新的博客帖子.我不确定我是否理解如何将Blog Post表与BlogPost_Authors表相关联...

任何建议将不胜感激.

php silverstripe

5
推荐指数
1
解决办法
195
查看次数

Silverstripe table_name未设置为类

我刚刚学习SilverStripe,实际上我遇到了silverstripe网站课程的问题.

我有这门课:

namespace SilverStripe\Lessons;

use Page;

class ArticlePage extends Page
{
    private static $can_be_root = false;
    private static $db = [
        'Date' => 'Date',
        'Teaser' => 'Text',
        'Author' => 'Varchar(255)',
    ];

//    public function getCMSFields(){
//        $fields = parent::getCMSFields();
//        $fields = addFieldToTab();
//        return $fields;
//    }

}
Run Code Online (Sandbox Code Playgroud)

现在当我/ dev/build我在构建页面上得到这个反馈: 在此输入图像描述

所以我接下来做的是实际注释掉$ db数组的声明.然后我从dev/build获得了这个反馈:

在此输入图像描述

所以我不确定的一些事情.dev/build的第一个输出中的红色注释表明您应该为所有命名空间模型定义table_name.它确实没有声明我有一个未定义的table_name.但是它下面的下一个注释表示没有为类SilverStripe\Lessons\ArticlePage设置table_name.那么定义一个table_name并在这些消息的上下文中"设置"table_name是一回事吗?

此外,第二个输出表明为SilverStripe\Lessons\ArticlePage定义了table_name事实上每个table_name都附加了"2",这是我在开始这篇文章之前进行实验的结果.即,一旦我看到这种行为,我重复实验尝试重现行为,因此创建和删除了更多的表,因此他们的名字必须递增.那么为什么没有设置ArticlePage table_name?有人可以帮我解决这个问题吗?戴夫.

php silverstripe silverstripe-4

5
推荐指数
1
解决办法
479
查看次数