我想将当前路径信息(即controller / action / params)传递给一个小部件,该小部件使用另一个模型在应用程序的视图中生成一些静态HTML内容,包括布局。
为了实现这一目标,我已经定义了以下控制器protected void btnTestDb_Click(object sender, EventArgs e)
{
string result = TestConnection();
Response.Write(result);
}
private string TestConnection()
{
try
{
using(SqlConnection connection = new SqlConnection("...."))
{
connection.Open();
return "Connection opened correctly";
}
}
catch(Exception ex)
{
return "Error opening the connection:" + ex.Message;
}
}
,并且我使所有的app控制器都扩展了它而不是AppController
yii\web\Controller;
例如,在SiteController中:
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
class AppController extends Controller
{
public function __construct($id, $module, $config = array()) {
parent::__construct($id, $module, $config);
$this->view->params['path2'] = Yii::$app->controller->id;
}
/*
public function beforeAction($action) {
parent::beforeAction($action);
$this->view->params['path2'] = Yii::$app->controller->id;
} */
}
问题处于任何class SiteController extends AppController
{...
操作的任何视图中,因为eaxmple SiteController
about
在我希望它回显echo $this->params['path2']
时返回空白。此外,取消注释site
会使所有SiteController操作产生空白页。
我需要以任何方式允许全局地将beforeAction
值设置为当前$this->params['path2']
,而不管重写的路径是什么。