gpt4 book ai didi

php - Symfony2 : Redirecting to last route and flash a message?

转载 作者:IT王子 更新时间:2023-10-29 01:00:21 31 4
gpt4 key购买 nike

Symfony 2 中尝试闪烁消息并将用户重定向回上一页时,我遇到了一个小问题。

我有一个非常简单的 CRUD。新建或编辑时,如果相应的创建/更新方法出现问题,我想闪现一条消息:

  1. 用户--GET-->新建
  2. new --POST--> 创建(失败)
  3. --REDIRECT--> new (with flash message)

我正在做以下事情:

  $this->container->get('session')->setFlash('error', 'myerror');
$referer = $this->getRequest()->headers->get('referer');
return new RedirectResponse($referer);

但是,它没有重定向到正确的引荐来源网址!即使 referrer 的值是正确的(例如:http://localhost/demo/2/edit/)它也会重定向到索引。为什么?

最佳答案

这是 Naitsirch 和 Santi 代码的替代版本。我意识到一个特质对于这个功能来说是完美的。还对代码进行了一些优化。我更喜欢返回所有参数,包括 slug,因为在生成路由时可能需要这些参数。

此代码在 PHP 5.4.0 及更高版本上运行。当然,您可以将 trait 用于多个 Controller 。如果您将特征放在单独的文件中,请确保将其命名为与特征相同,遵循 PSR-0。

<?php
trait Referer {
private function getRefererParams() {
$request = $this->getRequest();
$referer = $request->headers->get('referer');
$baseUrl = $request->getBaseUrl();
$lastPath = substr($referer, strpos($referer, $baseUrl) + strlen($baseUrl));
return $this->get('router')->getMatcher()->match($lastPath);
}
}

class MyController extends Controller {
use Referer;

public function MyAction() {
$params = $this->getRefererParams();

return $this->redirect($this->generateUrl(
$params['_route'],
[
'slug' => $params['slug']
]
));
}
}

关于php - Symfony2 : Redirecting to last route and flash a message?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11892080/

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