gpt4 book ai didi

Cakephp 2.0 + 元素 + requestAction = 空结果

转载 作者:行者123 更新时间:2023-12-01 12:52:35 25 4
gpt4 key购买 nike

我尝试在 Cakephp 2.0 中使用 Elements,但没有成功。我有一个名为 Post 的模型、一个名为 Posts 的 Controller 和各种 View 。在布局中,我想包括(对于每个页面/ View )一个包含最新消息的框(比如 2)。

所以我创建了元素dok-posts.ctp

<?php $posts = $this->requestAction('posts/recentnews'); ?>
<?php foreach($posts as $post): ?>


<div class="Post">
....

在我的 PostsController 中,我添加了函数 recentnews()

public function recentnews(){
$posts = $this->Post->find('all',array('order' => 'Post.created DESC','limit' => 2));
if ($this->request->is('requested')) {
return $posts;
} else {
$this->set('posts', $posts);
}
}

在我的布局中,default.ctp 我调用我的元素

<?php echo $this->element('dok-posts'); ?>

问题是我收到这条消息

Invalid argument supplied for foreach() [APP\View\Elements\dok-posts.ctp, line 9]

dok-posts.php 中调试,就在 $this->requestAction 之后,给我一个空行。 recentnews 函数似乎没有返回任何内容(函数中的调试返回一个包含找到的帖子的数组)。谁能告诉我我做错了什么?

最佳答案

既然你发现这个 Action 实际上被调用了,

$posts = $this->requestAction('posts/recentnews');

工作正常。在这里,为了清楚和扩展配置选项(为了以后更改代码),我建议您使用 Router 数组而不是 URL

$posts = $this -> requestAction(array(
'controller' => 'posts',
'action' => 'recentnews'
));

现在解决您的实际问题...既然你说了,它总是进入 else 分支,

$this->request->is('requested')

可能无法按预期工作。试试这个(它非常适合我):

if (!empty($this -> request -> params['requested'])) {
return $posts;
}

关于Cakephp 2.0 + 元素 + requestAction = 空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com