我正在开发一个应该能够处理以下URL的自定义电子邮件表单:
http://www.example.com/email
Run Code Online (Sandbox Code Playgroud)
默认为常规电子邮件地址.
http://www.example.com/email/Office/1
Run Code Online (Sandbox Code Playgroud)
从Office模型ID 1获取电子邮件联系人详细信息
http://www.example.com/email/Staff/96
Run Code Online (Sandbox Code Playgroud)
从员工模型,ID 96获取电子邮件联系详细信息
我想我可以通过访问正常的$ Action/$ ID变量来做到这一点 - 但是完全被路由文档弄糊涂了:https://docs.silverstripe.org/en/3.3/developer_guides/controllers/routing/
class EmailPage_Controller extends Page_Controller
{
private static $allowed_actions = array(
'Form',
'Staff',
'Office'
);
public function Form() {
$Action = $this->request->getVar('Action');
$ID = $this->request->getVar('ID');
Run Code Online (Sandbox Code Playgroud)
不行.
在Silverstripe中访问/传递URL变量到表单的最佳方法是什么?
我有一个正在开发的Silverstripe 3.1站点,并希望将消息写入默认日志文件 - silverstripe.log
这是我们用来向屏幕输出变量或消息的方法:
Debug::show($variable);
Debug::message("Debug message goes here");
Run Code Online (Sandbox Code Playgroud)
将这些输出到silverstripe.log文件的最简单方法是什么?我一直在查看文档,找不到正确的方法:http://doc.silverstripe.com/framework/en/topics/debugging
我们有许多客户在使用Silverstripe CMS时感到困惑,然后他们的实时网站会显示草稿版本.
我们设置了" Better Navigator ",显示一个站点是否处于Draft或Live状态,但客户端仍然感到困惑(在某些视图中,Better Navigator按钮被遮挡).
理想情况下,如果在CMS之外查看实时网站,我们希望它只显示"实时"版本.
那可能吗?
我正在扩展具有以下summary_fields(显示在CMS的"安全性"部分中)的Member对象.
private static $summary_fields = array(
'FirstName' => 'First Name',
'Surname' => 'Last Name',
'Email' => 'Email',
);
Run Code Online (Sandbox Code Playgroud)
如何删除'FirstName'和'Surname'并将其替换为数据扩展名中的自定义字段:'Full Name'?
如何将"电子邮件"更改为"电子邮件地址"?
我知道如何通过数据扩展添加summary_fields,但我不知道如何删除或更改它们.
我有以下代码:
class Page_Controller extends ContentController
{
public function TimeNow() {
return date('Y-m-d H:i:s');
}
}
Run Code Online (Sandbox Code Playgroud)
但是以下模板代码不起作用:
$TimeNow.Format(Ymd\THis)
Run Code Online (Sandbox Code Playgroud)
我猜这是因为TimeNow不是作为SS_Datetime对象(继承Format方法).
我怎么投TimeNow的SS_Datetime?
我在Silverstripe中有两个名为TeamPage和TeamReport的自定义页面类型.
创建新的TeamPage时,我希望将TeamReport添加为单个子页面 - 使用'/ report /'作为URL slug.
我应该向TeamPage添加什么代码才能实现此目的?