Php 我的SilverStripe模块覆盖其他模块显示
我正在编写一个订阅模块,以将插件添加到该模块中。到目前为止,我的yml为:Php 我的SilverStripe模块覆盖其他模块显示,php,templates,silverstripe,Php,Templates,Silverstripe,我正在编写一个订阅模块,以将插件添加到该模块中。到目前为止,我的yml为: --- Name: subscription After: 'framework/*','cms/*' --- Blog: extensions: - Subscription Page_Controller: extensions: - SubscriptionWidget 和my SubscriptionWidget.php: <?php class SubscriptionWidge
---
Name: subscription
After: 'framework/*','cms/*'
---
Blog:
extensions:
- Subscription
Page_Controller:
extensions:
- SubscriptionWidget
和my SubscriptionWidget.php:
<?php
class SubscriptionWidget extends DataExtension {
public function SubscriptionWidget() {
$controller = SubscriptionWidget_Controller::create();
$form = $controller->SubscriptionWidget();
return $form;
}
}
class SubscriptionWidget_Controller extends Controller {
private static $allowed_actions = array('SubscriptionWidget');
public function SubscriptionWidget () {
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('Email', 'Email'),
TextField::create('Name', 'Name')
),
FieldList::create(
FormAction::create('submit', 'Subscribe')
)
);//->setTemplate('SubscriptionWidget');
return $form;
}
public function submit($data, $form) {
return $this->redirect('/subscribed');
}
}
从我的yml中,它再次出现。我已经浏览了两个代码库,它们都非常简单,没有相互冲突的函数。我还尝试使用ContentController
而不是Page\u Controller
,我的模板将消失,直到我禁用BetterNavigator,然后它重新出现。我确实有一个或两个相当空的类,但都称为订户的一些变体,而BetterNavigator中只有一个函数称为BetterNavigator
为什么会发生这种情况 我在代码中只看到一个冲突导致错误的运行时行为。您的方法
SubscriptionWidget::SubscriptionWidget()
被视为遗留类构造函数。所以我建议您考虑更好的类和方法名称
class SubscriptionWidget extends Extension
{
// explicitly defined constructor
public function __construct() {
parent::__construct();
}
// now this one is normal function
public function SubscriptionWidget() {
$controller = SubscriptionWidget_Controller::create();
$form = $controller->SubscriptionWidget();
return $form;
}
}
你试过改变“之前”或“之后”吗你的YMAL的一部分,以便它引用另一个模块,以确保它是在它之前还是之后?@Barry刚刚尝试了
之前:'betternavigator/*'
和之后,没有区别。你使用的SS和betternavigator模块的版本是什么?@GregSmirnov似乎正在运行2.1,而3已经过时了:/使用旧版本会严重导致这种情况吗奇怪之处?您是否在模板中的某个位置放置了$BetterNavigator
以使用BetterNavigator?
class SubscriptionWidget extends Extension
{
// explicitly defined constructor
public function __construct() {
parent::__construct();
}
// now this one is normal function
public function SubscriptionWidget() {
$controller = SubscriptionWidget_Controller::create();
$form = $controller->SubscriptionWidget();
return $form;
}
}