yii2 - Construyendo migas de pan automáticamente con módulos
breadcrumbs (1)
La pregunta es definitivamente demasiado amplia, pero aquí está la solución que utilicé:
<?php
namespace backend/modules/tests/components;
use yii/helpers/ArrayHelper;
use yii/web/Controller as BaseController;
use yii/web/View;
class Controller extends BaseController
{
/**
* @inheritdoc
*/
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
Yii::$app->view->on(View::EVENT_BEGIN_BODY, function () {
$this->fillBreadcrumbs();
});
return true;
} else {
return false;
}
}
/**
* Fill common breadcrumbs
*/
protected function fillBreadcrumbs()
{
$breadcrumbs = [];
// Add needed elements to $breadcrumbs below
$label = ''Tests'';
$breadcrumbs[] = $this->route == ''/tests/default/index'' ? $label : [
''label'' => $label,
''url'' => [''/tests/default/index''],
];
// ...
$this->mergeBreadCrumbs($breadcrumbs);
}
/**
* Prepend common breadcrumbs to existing ones
* @param array $breadcrumbs
*/
protected function mergeBreadcrumbs($breadcrumbs)
{
$existingBreadcrumbs = ArrayHelper::getValue($this->view->params, ''breadcrumbs'', []);
$this->view->params[''breadcrumbs''] = array_merge($breadcrumbs, $existingBreadcrumbs);
}
}
Como puede ver, se basa en ver eventos y un controlador personalizado (que se extiende desde yii/web/Controller
).
Todo lo que necesita a continuación es extender los controladores necesarios desde uno personalizado.
Mi página web tiene varios módulos, y quiero saber si hay una manera de agregar rutas de navegación a la URL de inicio de los módulos, sin tener que agregar manualmente a todos los archivos. ex:
Home > MyModule > MyController