Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的SilverStripe模块覆盖其他模块显示_Php_Templates_Silverstripe - Fatal编程技术网

Php 我的SilverStripe模块覆盖其他模块显示

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

我正在编写一个订阅模块,以将插件添加到该模块中。到目前为止,我的yml为:

---
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;
    }
}