nowo-tech/controller-kit-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nowo-tech/controller-kit-bundle

Composer 安装命令:

composer require nowo-tech/controller-kit-bundle

包简介

Controller utilities for Symfony: redirectToReferer (configurable default route) and SafeForwardTrait for safe request forwarding.

README 文档

README

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

Found this useful? Install from Packagist · Give it a star on GitHub so more developers can find it.

Controller Kit Bundle — Utilities for Symfony controllers: redirectToReferer (configurable default route) and SafeForwardTrait for safe request forwarding. Tested on Symfony 7.4, 8.0, and 8.1 (also compatible with Symfony 6.x and 7.0–7.3) · PHP 8.1+ (Symfony 8.x requires PHP 8.4+).

Features

  • RedirectToRefererTrait — Redirect to the HTTP Referer when valid (same app, route exists), or to a configurable default route. 100% configurable via nowo_controller_kit.default_route.
  • SafeForwardTrait — Forward to another controller method with a check that the method exists (avoids runtime errors).

Installation

composer require nowo-tech/controller-kit-bundle

With Symfony Flex, the recipe registers the bundle and adds config. Without Flex, see docs/INSTALLATION.md.

Manual registration in config/bundles.php:

return [
  // ...
  Nowo\ControllerKitBundle\NowoControllerKitBundle::class => ['all' => true],
];

Configuration

In config/packages/nowo_controller_kit.yaml:

nowo_controller_kit:
  default_route: homepage  # Route used when redirectToReferer has no valid Referer

Use your own route name (e.g. app_home, dashboard).

Usage

redirectToReferer

Use the trait in a controller that extends AbstractController:

use Nowo\ControllerKitBundle\Controller\RedirectToRefererTrait;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;

class MyController extends AbstractController
{
  use RedirectToRefererTrait;

  public function submit(Request $request): Response
  {
    // ... handle form ...
    return $this->redirectToReferer($request);
    // Optional: merge params and set status
    // return $this->redirectToReferer($request, ['success' => 1], 303);
  }
}

When the request has a valid Referer header (same host as the current request, path matches a route in your app), the user is redirected there (with path and query params preserved). Otherwise they are redirected to the configured default_route.

safeForward

Use the trait in any controller that has forward() (e.g. AbstractController):

use Nowo\ControllerKitBundle\Controller\SafeForwardTrait;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class ApiController extends AbstractController
{
  use SafeForwardTrait;

  public function delegate(): Response
  {
    return $this->safeForward(
      OtherController::class,
      'actionName',
      ['id' => 123],
      ['page' => 1]
    );
  }
}

If OtherController::actionName does not exist, a BadMethodCallException is thrown instead of a generic error.

Documentation

Additional documentation

Requirements

  • PHP >=8.1 (<8.6); Symfony 8.0 and 8.1 require PHP 8.4+
  • Symfony 7.4, 8.0, or 8.1 (minimum supported minors; also works on Symfony 6.x and 7.0–7.3 via composer.json constraints)
  • For traits: symfony/framework-bundle in your application (AbstractController)

Development

make up
make install
make test
make cs-check
make phpstan
make release-check

Demo

  • demo/symfony7 — Symfony 7.4, host port 8010 by default (PORT in .env)
  • demo/symfony8 — Symfony 8.1 (PHP 8.4+), host port 8011 by default

Each demo runs FrankenPHP + Caddy in Docker. docker-compose sets APP_ENV=dev and mounts Caddyfile.dev, so PHP runs without long-lived workers (changes visible on refresh). Worker mode is the production Caddyfile path — see docs/DEMO-FRANKENPHP.md.

Global demo commands: make -C demo help (e.g. make -C demo up-symfony8).

Tests and coverage

  • Tests: PHPUnit (PHP)
  • PHP: 100%

License and author

MIT · Nowo.tech · Héctor Franco Aceituno

nowo-tech/controller-kit-bundle 适用场景与选型建议

nowo-tech/controller-kit-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 23 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「symfony」 「bundle」 「controller」 「redirect」 「utilities」 「traits」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 nowo-tech/controller-kit-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 nowo-tech/controller-kit-bundle 我们能提供哪些服务?
定制开发 / 二次开发

基于 nowo-tech/controller-kit-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 36
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-23