gpt4 book ai didi

CakePHP:重定向不起作用

转载 作者:行者123 更新时间:2023-12-05 08:13:48 25 4
gpt4 key购买 nike

我的 Controller 中有以下代码:

class ContactsController extends AppController {
public $helpers = array('Html', 'Form', 'Session');
public $components = array('Session');

public function index() {
$this->set('contacts', $this->Contact->find('all'));
}

public function view($id) {
if (!$id) {
throw new NotFoundException(__('Invalid contact'));
}

$contact = $this->Contact->findById($id);
if (!$contact) {
throw new NotFoundException(__('Invalid contact'));
}
$this->set('contact', $contact);
}

public function add() {
if ($this->request->is('post')) {
$this->Contact->create();
if ($this->Contact->save($this->request->data)) {
$this->Session->setFlash('Your contact has been saved.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to add your contact.');
}
}
}
}

在 add() 方法中,我有行 $this->redirect(array('action' => 'index')); 我希望这一行重定向回我的在我看来索引页。但我得到的只是一张空白的白页。

感谢任何帮助。

问候,斯蒂芬

最佳答案

您的代码看起来有效;我在您提供的代码中没有看到错误。

有几个可能的原因;

  • 您的代码中其他地方有错误,但 cake php 没有输出错误消息,因为调试被禁用。通过在 app/Config/core.php 中将调试设置为 1 或 2 来启用调试- Configure::write('debug', 2);
  • 您的应用程序在发送重定向 header 之前向浏览器输出了一些内容。这可能是由任何 <?php 之前或之后的(不可见)空白引起的。或 ?> .这将导致“ header 已发送”警告,并且浏览器不会重定向。 StackOverflow 上有很多关于这种情况的问题,例如:How to fix "Headers already sent" error in PHP

注意;在 CakePHP 中,放置 return 的良好做法在任何重定向语句之前;这将允许更好地对您的应用程序进行单元测试,即:

return $this->redirect(array('action' => 'index'));

更新;关于查找原因的额外“指示”

跟踪这类问题可能比较麻烦,我会补充一些指点

  • 如果您使用的是 AuthSecurity组件,其中一个可能会导致“问题”(例如授权失败或发布的数据被标记为“无效”,这将由“blackHole()”回调处理。在您的 AppController 中禁用两者以检查问题是否存在仍然存在
  • 如果问题仍然存在,则可能正在发送 header (如前所述),但没有出现警告/错误。要查找发送这些 header 的 ifwhere,请将此代码添加到您的“添加”操作;

调试代码:

if (headers_sent($file, $line)) {
exit("headers were already sent in file: {$file}, line number: {$line}");
}

关于CakePHP:重定向不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130309/

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