knplabs / rad-url-generation
此包已弃用且不再维护。未建议替代包。
只需自动完成所需的现有路由参数。
v2.1.0
2017-09-21 08:23 UTC
Requires
- php: ~7.0
- symfony/config: ~2.8||~3.0
- symfony/dependency-injection: ~2.8||~3.0
- symfony/http-kernel: ~2.8||~3.0
- symfony/routing: ~2.8||~3.0
Requires (Dev)
- knplabs/phpspec-welldone-extension: dev-master
- phpspec/phpspec: ~2.4
README
遗憾的是,我们决定不再维护此项目(查看原因)。如果您想将其他包标记为此包的替代品,请发送电子邮件至 hello@knplabs.com。
快速应用程序开发:URL生成
只需自动完成所需的现有路由参数。
官方维护者
安装
composer require knplabs/rad-url-generation ~2.0
class AppKernel { function registerBundles() { $bundles = array( //... new Knp\Rad\UrlGeneration\Bundle\UrlGenerationBundle(), //... ); //... return $bundles; } }
用法
继续使用以前的URL生成方式,实现方面没有变化。唯一的变化是您不再重复当前的路由参数。
示例 1
当前路由
app_products_show: path: /shops/{shop}/products/{products}/
我的当前URL是 /shops/12/products/345/
。我想再次构建相同的URL。如果它已经是我的当前路由,我应该重复路由参数吗?
不。
$router->generate('app_products_show'); // Returns /shops/12/products/345/ $router->generate('app_products_show', ['product' => 122]); // Returns /shops/12/products/122/ $router->generate('app_products_show', ['shop' => 1]); // Returns /shops/1/products/345/ $router->generate('app_products_show', ['shop' => 1, 'product' => 122]); // Returns /shops/1/products/122/
示例 2
当前路由
app_products_show: path: /shops/{shop}/products/{products}/
当前 URL: /shops/1/products/122/
我想构建此URL
app_variant_show: path: /shops/{shop}/products/{products}/variants/{variant}/
我可以执行
$router->generate('app_variant_show', ['shop' => 1, 'product' => 122, 'variant' => 23]); // Returns /shops/1/products/122/variants/23/
但为什么我要重复已经存在的参数呢?
$router->generate('app_variant_show', ['variant' => 23]); // Returns /shops/1/products/122/variants/23/
兼容性
- 路由服务:
$container->get('router')->generate('app_products_show')
。 - 控制器快捷方式:
$this->generateUrl('app_products_show')
和$this->redirectToRoute('app_products_show')
。 - Twig函数:
path('app_products_show')
或url('app_products_show')
。 - 所有其他使用Symfony路由器的情况。