如何以及在何处编写函数以在 yii2 basic 的布局(main.php)中使用
How and where to write function to use in layout(main.php) in yii2 basic
之前我在视图页面中制作了一个导航栏,为此我在相应的控制器中编写了函数,但现在我必须将其放在主文件(布局)中。但是现在我不知道在哪里写函数。
我还必须通过包含导航栏值的函数将两个变量传递给布局文件。
我已经尝试过一些方法,但它只允许我 return 值。
基本上我想知道我可以在哪里编写下面的函数以在 yii2 basic
的主布局中使用它
public function actionMenutest()
{
$query = new Query;
$data= $query->select('name,id')
->from('menu')->all();
$query2 = new Query;
$data2= $query2->select('name,menu_id')
->from('submenu')->all();
return $this->render('menutest',[
'data'=>$data, 'data2'=>$data2
]);
}
您可以使用 EVENT_BEFORE_RENDER 来达到这个目的。对于高级应用程序,以下代码需要进入 common\config\bootstrap.php 文件。
use yii\base\Event;
use yii\base\View;
Event::on(View::className(), View::EVENT_BEFORE_RENDER, function() {
$query = new Query;
$data= $query->select('name,id')
->from('menu')->all();
$query2 = new Query;
$data2= $query2->select('name,menu_id')
->from('submenu')->all();
Yii::$app->view->params['data'] = $data;
Yii::$app->view->params['data2'] = $data2;
});
然后在您的主布局中,您可以将您的模型用作:
$data= $this->params['data'];
$data2= $this->params['data2'];
我还没有使用基本模板。但您可以尝试以下方法:
在 config 文件夹中创建一个 bootstrap.php 文件。
之后更新 web/index.php 文件。将以下代码放入其中:
require(__DIR__ . '/../config/bootstrap.php');
然后将以上代码放入bootstrap.php文件中。试试吧,如果您需要更多帮助,请告诉我。
之前我在视图页面中制作了一个导航栏,为此我在相应的控制器中编写了函数,但现在我必须将其放在主文件(布局)中。但是现在我不知道在哪里写函数。 我还必须通过包含导航栏值的函数将两个变量传递给布局文件。 我已经尝试过一些方法,但它只允许我 return 值。 基本上我想知道我可以在哪里编写下面的函数以在 yii2 basic
的主布局中使用它public function actionMenutest()
{
$query = new Query;
$data= $query->select('name,id')
->from('menu')->all();
$query2 = new Query;
$data2= $query2->select('name,menu_id')
->from('submenu')->all();
return $this->render('menutest',[
'data'=>$data, 'data2'=>$data2
]);
}
您可以使用 EVENT_BEFORE_RENDER 来达到这个目的。对于高级应用程序,以下代码需要进入 common\config\bootstrap.php 文件。
use yii\base\Event;
use yii\base\View;
Event::on(View::className(), View::EVENT_BEFORE_RENDER, function() {
$query = new Query;
$data= $query->select('name,id')
->from('menu')->all();
$query2 = new Query;
$data2= $query2->select('name,menu_id')
->from('submenu')->all();
Yii::$app->view->params['data'] = $data;
Yii::$app->view->params['data2'] = $data2;
});
然后在您的主布局中,您可以将您的模型用作:
$data= $this->params['data'];
$data2= $this->params['data2'];
我还没有使用基本模板。但您可以尝试以下方法:
在 config 文件夹中创建一个 bootstrap.php 文件。
之后更新 web/index.php 文件。将以下代码放入其中:
require(__DIR__ . '/../config/bootstrap.php');
然后将以上代码放入bootstrap.php文件中。试试吧,如果您需要更多帮助,请告诉我。