Php 将数据库值传递给布局
在我的Zend应用程序中,有一个用于多个模块的布局文件。现在我需要从数据库(表网关)中检索数据并显示在布局上。然后它应该出现在所有模块中 我如何做到这一点 前-Php 将数据库值传递给布局,php,zend-framework2,Php,Zend Framework2,在我的Zend应用程序中,有一个用于多个模块的布局文件。现在我需要从数据库(表网关)中检索数据并显示在布局上。然后它应该出现在所有模块中 我如何做到这一点 前- $user\u name的值应从数据库中获取并传递到布局文件。我相信,在Zend中,您的控制器将需要: $this->view->assign('variableName','variableValue') 在您看来,您需要: $this->variableName您可以使用来实现类似的功能,例如: class MyPlugin
$user\u name的值应从数据库中获取并传递到布局文件。我相信,在Zend中,您的控制器将需要:
$this->view->assign('variableName','variableValue')代码>
在您看来,您需要:
$this->variableName代码>您可以使用来实现类似的功能,例如:
class MyPlugin extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request) {
// Get instance
$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
$view->user_name = 'your_username';
}
}
并在frontController中注册您的插件:
Zend_Controller_Front::getInstance()->registerPlugin(new MyPlugin());
然后在布局中,您可以执行以下操作:
<?php echo $this->user_name; ?>
您不必在每个控制器中都设置它。您可以将其附加到module.php中的布局变量
public function onBootstrap(MvcEvent $e)
{
$sm = $e->getApplication()->getServiceManager();
$tableWhatever = $sm->get('tableWhatever');
$viewModel = $e->getApplication()->getMvcEvent()->getViewModel();
$viewModel->userName = $tableWhatever->getUserName();
}
根据zf2版本,您可能必须访问布局中的变量,如下所示:
$this->layout()->userName;
您还可以扩展AbstractActionController
,并通过它添加布局变量。不过,我通常只使用快速启动方法。这是针对Zend 1还是Zend 2的?@ChamingaD查看Zend Framework 2的更新答案我是否必须在每个模块控制器中添加此选项?是的。每个控制器通常都有一个关联的布局,并且该控制器负责收集传递到其布局的数据。控制器中的上述行非常轻量级,可以跨多个控制器放置。
$this->layout()->userName;