CAKEPHP3重定向控制器

CAKEPHP3重定向控制器,cakephp,redirect,cakephp-3.0,Cakephp,Redirect,Cakephp 3.0,在我的CakePHP 3应用程序中,在控制器重定向后,出现以下错误: Error: [LogicException] Controller action can only return an instance of Response Request URL: /mycontroller/ Stack Trace: #0 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(87

在我的CakePHP 3应用程序中,在控制器重定向后,出现以下错误:

Error: [LogicException] Controller action can only return an instance of Response
Request URL: /mycontroller/
Stack Trace:
#0 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(87): Cake\Routing\Dispatcher->_invoke(Object(App\Controller\SigninsController))
#1 /var/www/vhosts/example.com/httpdocs/webroot/index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#2 {main}
关于CakePHP 2,重定向是这样的:

$this->redirect('/orders/thanks');
$this->redirect('http://www.example.com');
return $this->redirect(
        array('controller' => 'orders', 'action' => 'confirm')
    );
return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
return $this->redirect(
            ['controller' => 'Orders', 'action' => 'thanks']
        );
但在CakePHP 3中,似乎是这样的:

$this->redirect('/orders/thanks');
$this->redirect('http://www.example.com');
return $this->redirect(
        array('controller' => 'orders', 'action' => 'confirm')
    );
return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
return $this->redirect(
            ['controller' => 'Orders', 'action' => 'thanks']
        );
当我在
$this->redirect
之前添加
return
单词时,错误得到解决。那么这会造成问题吗?因为我在中看不到返回重定向部分。《迁移指南》只提到第三个参数已删除。

请查看

Response提供了一个接口来包装与响应相关的常见任务,例如: 正在发送重定向的标题

您应该从操作返回响应实例,以防止视图呈现,并让调度器处理实际重定向

看看

Response提供了一个接口来包装与响应相关的常见任务,例如: 正在发送重定向的标题

您应该从操作返回响应实例,以防止视图呈现,并让调度器处理实际重定向

看看

Response提供了一个接口来包装与响应相关的常见任务,例如: 正在发送重定向的标题

您应该从操作返回响应实例,以防止视图呈现,并让调度器处理实际重定向

看看

Response提供了一个接口来包装与响应相关的常见任务,例如: 正在发送重定向的标题

您应该从操作返回响应实例,以防止视图呈现,并让调度器处理实际重定向


当您想要重定向到其他页面,或者我们可以说是其他控制器的操作/方法,或者即使您想要重定向到您指定的第三方链接,也可以使用返回CakePHP 3应用程序:-

return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
return $this->redirect(['controller' => 'Orders', 'action' => 'thanks']);
如果您想重定向到同一控制器中的其他方法,则可以保留返回并使用setAction,如下所示,但此处URL将保持不变

$this->setAction('thanks'); 
Return是更好的方法,如果您使用下面的代码,URL将重定向

return $this->redirect(['action' => 'thanks']);

当您想要重定向到其他页面,或者我们可以说是其他控制器的操作/方法,或者即使您想要重定向到您指定的第三方链接,也可以使用返回CakePHP 3应用程序:-

return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
return $this->redirect(['controller' => 'Orders', 'action' => 'thanks']);
如果您想重定向到同一控制器中的其他方法,则可以保留返回并使用setAction,如下所示,但此处URL将保持不变

$this->setAction('thanks'); 
Return是更好的方法,如果您使用下面的代码,URL将重定向

return $this->redirect(['action' => 'thanks']);

当您想要重定向到其他页面,或者我们可以说是其他控制器的操作/方法,或者即使您想要重定向到您指定的第三方链接,也可以使用返回CakePHP 3应用程序:-

return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
return $this->redirect(['controller' => 'Orders', 'action' => 'thanks']);
如果您想重定向到同一控制器中的其他方法,则可以保留返回并使用setAction,如下所示,但此处URL将保持不变

$this->setAction('thanks'); 
Return是更好的方法,如果您使用下面的代码,URL将重定向

return $this->redirect(['action' => 'thanks']);

当您想要重定向到其他页面,或者我们可以说是其他控制器的操作/方法,或者即使您想要重定向到您指定的第三方链接,也可以使用返回CakePHP 3应用程序:-

return $this->redirect('/orders/thanks');
return $this->redirect('http://www.example.com');
return $this->redirect(['controller' => 'Orders', 'action' => 'thanks']);
如果您想重定向到同一控制器中的其他方法,则可以保留返回并使用setAction,如下所示,但此处URL将保持不变

$this->setAction('thanks'); 
Return是更好的方法,如果您使用下面的代码,URL将重定向

return $this->redirect(['action' => 'thanks']);

如果您使用的是路由名称,请使用此名称-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
您使用的是路线,然后使用此路线-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
最后一个选择是

$this->redirect(['controller' => 'Pages', 'action' => 'view']);
----------------------------------------------------------------------
如果要在视图文件中使用路由名称,则使用-

use Cake\Routing\Router;

echo Router::url(['_name' => 'view-details']);

echo Router::url(['controller' => 'Articles', 'action' => 'view', 'id' => 15]);

如果您使用的是路由名称,请使用此名称-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
您使用的是路线,然后使用此路线-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
最后一个选择是

$this->redirect(['controller' => 'Pages', 'action' => 'view']);
----------------------------------------------------------------------
如果要在视图文件中使用路由名称,则使用-

use Cake\Routing\Router;

echo Router::url(['_name' => 'view-details']);

echo Router::url(['controller' => 'Articles', 'action' => 'view', 'id' => 15]);

如果您使用的是路由名称,请使用此名称-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
您使用的是路线,然后使用此路线-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
最后一个选择是

$this->redirect(['controller' => 'Pages', 'action' => 'view']);
----------------------------------------------------------------------
如果要在视图文件中使用路由名称,则使用-

use Cake\Routing\Router;

echo Router::url(['_name' => 'view-details']);

echo Router::url(['controller' => 'Articles', 'action' => 'view', 'id' => 15]);

如果您使用的是路由名称,请使用此名称-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
您使用的是路线,然后使用此路线-

    $this->redirect(['_name' => 'view-details']);
$this->redirect('/page/view-details');
最后一个选择是

$this->redirect(['controller' => 'Pages', 'action' => 'view']);
----------------------------------------------------------------------
如果要在视图文件中使用路由名称,则使用-

use Cake\Routing\Router;

echo Router::url(['_name' => 'view-details']);

echo Router::url(['controller' => 'Articles', 'action' => 'view', 'id' => 15]);

在cakephp中,要转到特定视图/页面,请使用$this->render('filename')

如下

公共函数搜索() {


在cakephp中,要转到特定视图/页面,请使用$this->render('filename')

如下

公共函数搜索() {


在cakephp中,要转到特定视图/页面,请使用$this->render('filename')

如下

公共函数搜索() {


在cakephp中,要转到特定视图/页面,请使用$this->render('filename')

如下

公共函数搜索() {


您需要关闭自动渲染

因为cakephp方法在默认情况下希望以重定向到CTP文件结束

使用
$this->autoRender=false

在您的功能中

您需要关闭自动渲染

因为cakephp方法在默认情况下希望以重定向到CTP文件结束

使用
$this->autoRender=false

在您的功能中

您需要关闭自动渲染

因为cakephp方法在默认情况下希望以重定向到CTP文件结束

使用
$this->autoRender=false

在您的功能中

您需要关闭自动渲染

因为cakephp方法在默认情况下希望以重定向到CTP文件结束

使用
$this->autoRender=false
在函数内部

引用:“该方法无法再发送响应和退出脚本,而是返回设置了相应标题的响应实例。”引用:“该方法无法再发送响应和退出脚本,而是返回设置了相应标题的响应实例。”引用:“该方法无法再发送响应并退出脚本,而是返回一个设置了相应头的响应实例。”