如何在PHP中将变量传递给主视图
如何将变量传递给主视图,而不仅仅是控制器的视图 事实上,我想在所有视图中共享一段数据。我怎样才能在法尔孔做到这一点 例如,在Laravel中,我可以使用:如何在PHP中将变量传递给主视图,php,phalcon,Php,Phalcon,如何将变量传递给主视图,而不仅仅是控制器的视图 事实上,我想在所有视图中共享一段数据。我怎样才能在法尔孔做到这一点 例如,在Laravel中,我可以使用: View::share('variable',$value)使用Phalcon,您不需要任何附加功能将数据传递到布局中。动作中指定的所有变量在布局中自动可用: 控制器: class IndexController extends \Phalcon\Mvc\Controller { public function indexAction
View::share('variable',$value)代码>使用Phalcon,您不需要任何附加功能将数据传递到布局中。动作中指定的所有变量在布局中自动可用:
控制器:
class IndexController extends \Phalcon\Mvc\Controller
{
public function indexAction()
{
$this->view->bg = 'green';
$this->view->hello = 'world';
}
}
<html>
<body style="background: <?php echo $bg ?>">
<?php echo $this->getContent(); ?>
</body>
</html>
<div>
<?php echo $hello ?>
</div>
主布局:
class IndexController extends \Phalcon\Mvc\Controller
{
public function indexAction()
{
$this->view->bg = 'green';
$this->view->hello = 'world';
}
}
<html>
<body style="background: <?php echo $bg ?>">
<?php echo $this->getContent(); ?>
</body>
</html>
<div>
<?php echo $hello ?>
</div>
您可以为此创建一个服务-如果这是一个简单的变量,这将是一个过度的杀伤力,但它会工作
<?php
// In your bootstrap file
$di->setShared('variable', 41);
?>
变量当然可以是一个对象。就我个人而言,对于这些简单的变量,我正在使用config对象,即:{{{config.facebook.fbId}}
我认为最好是创建BaseController-parent controller everyone扩展。然后在执行每个操作后,使用事件添加要查看的共享数据:
<?php
class ControllerBase extends \Phalcon\Mvc\Controller
{
protected $_sharedData = [];
public function initialize()
{
// set shared data for all actions
this->_sharedData = [
'sharedVar' = 1,
'overrideMe' = false
];
}
public function afterExecuteRoute($dispatcher)
{
// Executed after every found action
$this->view->setVar('sharedData', $this->_sharedData);
}
}
这相当于$this->view->setVar('x',$x)代码>。这只为当前视图设置了x,我希望在所有视图中都有变量,它与任何控制器都不相关。这是一个很好的答案,但有一个语法错误。要在PhalconPHP中创建服务,第二个参数必须是一个函数,如下所示:$di->setShared('variable',function(){return 41;});