我有多个模型要添加变量$section
,然后在sidenav.ctp
中使用该值动态更改侧边栏。例如,我的模型是:
class Resource extends AppModel {
public $section = 'section1';
public $displayField = 'name';
public $order = 'modified DESC';
//validation, relationships, etc.
}
然后我有另一个模型:
class Topic extends AppModel {
public $section = 'section2';
public $tablePrefix = '';
//validation, relationships, etc.
}
所以在sidenav.ctp
中,我想做类似的事情:
<?php if ($this->section == 'section1') { ?>
<li><?php echo $this->Html->link(__('Resources'), array('controller' => 'resources', 'action' => 'index')); ?></li>
<li><?php echo $this->Html->link(__('Topics'), array('controller' => 'topics', 'action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('Log Out'), array('controller' => 'users', 'action' => 'logout')); ?> </li>
<?php } ?>
<?php if ($this->section == 'section2') { ?>
<li><?php echo $this->Html->link(__('Resources1'), array('controller' => 'resources', 'action' => 'index')); ?></li>
<li><?php echo $this->Html->link(__('Topics1'), array('controller' => 'topics', 'action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('Log Out1'), array('controller' => 'users', 'action' => 'logout')); ?> </li>
<?php } ?>
但以这种方式访问$section
不起作用。我无法弄清楚如何在模型中设置值,然后在视图中访问它。我知道我可以在Controller中设置值,然后只需$section
来访问它,但这需要我把它放在每个函数中。
答案 0 :(得分:1)
尝试查看文件$this->name == 'ModelName'
就像这个例子:
<li <?php if($this->name == 'Users'){?> class="active" <?php } ?> >
<a href="<?php echo $this -> Html -> url(array('plugin' => false, 'controller' => 'pages', 'action' => 'dashboard')); ?>">
<i class="fa fa-dashboard"></i>
<span><?php echo __('Dashboard', true); ?></span>
<span class="label label-warning pull-right">1</span>
</a>
</li>
OR
在您的控制器beforeFilter或beforeRender方法中:
//access variable from model
$this->set('sections',$this->User->section);
//or set direct
$this->set('sections','section1');
答案 1 :(得分:0)
视图/元素可以由任何控制器调用和呈现,因此除非您将它从模型传递到视图,否则它们不会自动知道您希望它引用哪些数据。 你可以做的最近的任何用途都不是回应路由器模型方法,但结果取决于你所在的网址。
答案 2 :(得分:0)
您可以保存定义全局变量
Configure::write('my_var','this is model variable');
和在您的视图文件中访问此变量,如下所示
echo Configure::read('my_var');