我试图在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进行了搜索,但对于标签命名系统的工作方式没有太多解释.
我是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函数不是).
那么这个函数应该返回什么类型的变量?数组?一个东西?
我对Silverstripe很新,并一直在玩CMS.
目前我被卡住了......我正在尝试$has_many在DataObject和Images之间添加关系.
我发现做这样的事情的文件很模糊?我知道当你想在两个DataObjects之间添加一个关系时,你需要添加一个$many_many和$belongs_many_many关系但是我如何用图像做这个?
我尝试将图像添加到a $has_many并简单地使用上传字段,但这只会导致错误.我还尝试保留图像$has_one并将上传字段setAllowedMaxFileNumber增加到10,但这只能保存1张图像.
在这方面的任何帮助将非常感谢:)
谢谢!
任何人都希望看到这里的代码是一个Pastebin
我正在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) 我是silverstripe和webhosting的新手,我想我不明白工作流程是什么.情况如下:有这个网站http://foo.com使用silverstripe.它已经安装并添加了一些内容.但是,我现在负责将设计从标准simple主题更改为自定义主题.
由于这需要进行一些测试和游戏,我当然不希望在线进行所有更改.我有ftp访问该网站,可以更改那里的所有文件(耶!).但我认为拥有本地网站副本,对我的离线版本进行所有更改,然后将最终新版本上传到webhoster(通过ftp)是最有用的.
所以我的问题如下:我如何获得具有所有silverstripe模块/主题等的网站的本地工作副本到我的Ubuntu计算机,并且可以像在线一样编辑它?
我认为必须有一个教程,但我找不到适合我的东西.
如果这不是建议的工作流程(现在下载网站,请在我的计算机上通过工作的silverstripe安装离线进行更改,再次上传所有内容)然后请告诉我它是如何正确完成的.
我有一个特定的模块可以做一些事情来整理 CMS。我们就这样称呼它吧silverstripe-cleanup。
该模块所做的一件事是将MetaData字段移动到它们自己的选项卡,我希望该选项卡始终是 CMS 中的最后一个选项卡。
因此,如果我的/httpdocs/silverstripe-cleanup/config/config.yml外观如下所示,如何确保此扩展在所有其他扩展之后应用?
---
Name: silverstripe-cleanup
---
SiteTree:
extensions:
- MetaDataMovementExtension
Run Code Online (Sandbox Code Playgroud) 在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.
使用 3.2 中引入的 ORM 更改调试 DB 查询变得更加困难。运行$dataList->sql()为您提供准备好的语句(形式为SELECT * FROM Table WHERE Title = ?),这是一个好的开始。?showqueriesURL 变量的作用相同。
如何获取语句的值或参数是我感兴趣的。我知道https://github.com/lekoala/silverstripe-debugbar但我想知道是否有办法在 XDebug 控制台中无需任何扩展即可获取它们(或仅通过var_dump:ing 某些东西)。
我快速浏览了silverstripe-debugbar的代码,但没有找到一个易于使用的解决方案。如果它在某个地方,请指点我:)
我现在谷歌搜索大约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表相关联...
任何建议将不胜感激.
我刚刚学习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)
所以我接下来做的是实际注释掉$ 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?有人可以帮我解决这个问题吗?戴夫.
silverstripe ×10
php ×6
debugging ×1
ftp ×1
image ×1
mysql ×1
oop ×1
relationship ×1
session ×1
ubuntu ×1
web-hosting ×1
yaml ×1