我如何在蛋糕中应用程序的每个网页中使用控制器的方法 php 3
How can i use a controller's method in every web page of the application in cake php 3
我正在使用 AdminLTE 主题,现在我想在 header 中添加一个功能,其中我需要来自数据库的数据,我怎样才能在 cake php 3 中完成这项工作。我已经通过调用查询并在视图中获取数据来完成它,但这违反了 mvc。我如何从数据库中获取数据并在每个视图中使用这些数据。
我认为您可以在 AppController
中使用 Cake 的控制器事件 beforeRender()
。使用此功能,您可以简单地为扩展 AppController
的控制器中的每个方法输出数据。我经常使用它来实现这种功能。
<?php
// src\Controller\AppController.php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
class AppController extends Controller
{
/**
* Before render callback.
*
* @param \Cake\Event\Event $event The beforeRender event.
* @return \Cake\Network\Response|null|void
*/
public function beforeRender(Event $event) {
$this->loadModel('Notifications');
$notifications = $this->Notifications->find('all' , [
'conditions' => [
// get notifications for current user or default demo notification
'user_id' => $this->Auth ? $this->Auth->user('id') : 0
]
])
->toArray();
$this->set(compact('notifications'));
}
}
然后在您的模板中您可以访问 $notifications
变量
<div class="list-group">
<?php if(count($notifications)):foreach($notifications as $item): ?>
<div class="list-group-item">
<?= h($item->content) ?>
</div>
<?php endforeach;endif; ?>
</div>
为了使其更常见,您可以制作一个页眉和页脚元素。并且请永远不要调用查询并查看数据。您可以在控制器各自的方法中获取数据并在视图中设置数据(也在元素中)。
关于如何创建元素,请访问https://book.cakephp.org/3.0/en/views.html#using-view-blocks。
我建议完成本教程以更深入地了解 CakePHP https://book.cakephp.org/3.0/en/tutorials-and-examples/cms/installation.html
如果您想了解更多或有任何疑问,请发表评论。
我正在使用 AdminLTE 主题,现在我想在 header 中添加一个功能,其中我需要来自数据库的数据,我怎样才能在 cake php 3 中完成这项工作。我已经通过调用查询并在视图中获取数据来完成它,但这违反了 mvc。我如何从数据库中获取数据并在每个视图中使用这些数据。
我认为您可以在 AppController
中使用 Cake 的控制器事件 beforeRender()
。使用此功能,您可以简单地为扩展 AppController
的控制器中的每个方法输出数据。我经常使用它来实现这种功能。
<?php
// src\Controller\AppController.php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
class AppController extends Controller
{
/**
* Before render callback.
*
* @param \Cake\Event\Event $event The beforeRender event.
* @return \Cake\Network\Response|null|void
*/
public function beforeRender(Event $event) {
$this->loadModel('Notifications');
$notifications = $this->Notifications->find('all' , [
'conditions' => [
// get notifications for current user or default demo notification
'user_id' => $this->Auth ? $this->Auth->user('id') : 0
]
])
->toArray();
$this->set(compact('notifications'));
}
}
然后在您的模板中您可以访问 $notifications
变量
<div class="list-group">
<?php if(count($notifications)):foreach($notifications as $item): ?>
<div class="list-group-item">
<?= h($item->content) ?>
</div>
<?php endforeach;endif; ?>
</div>
为了使其更常见,您可以制作一个页眉和页脚元素。并且请永远不要调用查询并查看数据。您可以在控制器各自的方法中获取数据并在视图中设置数据(也在元素中)。
关于如何创建元素,请访问https://book.cakephp.org/3.0/en/views.html#using-view-blocks。
我建议完成本教程以更深入地了解 CakePHP https://book.cakephp.org/3.0/en/tutorials-and-examples/cms/installation.html
如果您想了解更多或有任何疑问,请发表评论。